用要传递给其他方法的字符串填充 argv(并获取 argc)

Fill argv (and get argc) with a string to pass to other method

我从另一种方法收到一个 string(我不知道它的大小),我想用这个 argv(并得到 argc) =11=] 传递给其他方法,我不知道该怎么做。

string 的开头,我设置了我的应用程序的名称,所以我有一个最终的 string,例如:

"myapp arg1 arg2 arg3 arg4"

我的代码如下:

int main (int argc, const char* argv[])
{

    while(true)
    {

        // send_string() give a string like: “the_name_of_my_app arg1 arg2 arg3 arg4”
        std::string data = send_string(); 

        argv = data;
        argc = number_of_element_on_data;

        other_function(argc, argv);
    }
    return 0;
}

尝试这样的事情:

#include <vector>
#include <string>
#include <sstream>

int main (int argc, const char* argv[])
{
    while (true)
    {
        // send_string() give a string like: “the_name_of_my_app arg1 arg2 arg3 arg4”
        std::string data = send_string(); 

        std::istringstream iss(data);
        std::string token;

        std::vector<std::string> args;
        while (iss >> token)
            args.push_back(token);

        std::vector<const char*> ptrs(args.size()+1);
        for(size_t i = 0; i < args.size(); ++i)
            ptrs[i] = args[i].c_str();
        ptrs[args.size()] = NULL;

        other_function(args.size(), ptrs.data());
    }
    return 0;
}