Ver Fonte

consume argv

isundil há 9 anos atrás
pai
commit
52ce82edae
4 ficheiros alterados com 71 adições e 2 exclusões
  1. 1 1
      CMakeLists.txt
  2. 20 0
      include/params.hpp
  3. 12 1
      src/main.cpp
  4. 38 0
      src/params.cpp

+ 1 - 1
CMakeLists.txt

@@ -1,6 +1,6 @@
 cmake_minimum_required(VERSION 2.8)
 
-add_executable(jsonstroll src/main.cpp)
+add_executable(jsonstroll src/main.cpp src/params.cpp)
 
 set_property(TARGET jsonstroll PROPERTY RUNTIME_OUTPUT_DIRECTORY bin)
 

+ 20 - 0
include/params.hpp

@@ -0,0 +1,20 @@
+
+#pragma once
+
+#include <list>
+#include <string>
+#include <istream>
+
+class Params
+{
+    public:
+        Params(int ac, char **av);
+
+        std::basic_istream<char> &getInput() const;
+
+    private:
+        std::basic_istream<char> *input;
+        const std::string progName;
+        std::list<std::string> params;
+};
+

+ 12 - 1
src/main.cpp

@@ -1,5 +1,16 @@
 
-int main()
+#include <iostream>
+#include "params.hpp"
+
+int main(int ac, char **av)
 {
+    Params *params = new Params(ac, av);
+
+    std::basic_istream<char> &ss = params->getInput();
+    while (ss.good())
+    {
+        std::cout << "[" << (char) ss.get() << "]";
+    }
+    std::cout << std::endl;
 }
 

+ 38 - 0
src/params.cpp

@@ -0,0 +1,38 @@
+
+#include <iostream>
+#include <sstream>
+#include "params.hpp"
+
+Params::Params(int ac, char **av) :progName(*av), params(std::list<std::string>(ac -1))
+{
+    bool written = false;
+    std::stringstream *input = nullptr;
+
+    while (*(++av))
+    {
+        std::string tmp(*av);
+        if (!input)
+        {
+            params.push_back(tmp);
+            if (tmp == "--")
+            {
+                input = new std::stringstream();
+            }
+        }
+        else
+        {
+            if (written)
+                input->write(" ", sizeof(char));
+            else
+                written = true;
+            input->write(tmp.c_str(), sizeof(char) * tmp.size());
+        }
+    }
+    this->input = input;
+}
+
+std::basic_istream<char> &Params::getInput() const
+{
+    return input == nullptr ? std::cin : *input;
+}
+