用字符串填充argv(并获取argc)以传递给其他方法[重复]
Posted
技术标签:
【中文标题】用字符串填充argv(并获取argc)以传递给其他方法[重复]【英文标题】:Fill argv (and get argc) with a string to pass to other method [duplicate] 【发布时间】:2021-12-09 10:57:18 【问题描述】:我从另一个方法收到string
(我不知道它的大小),我想用这个string
填充我的argv
(并得到argc
)以传递给其他方法和我不知道该怎么做。
在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;
【问题讨论】:
您可以使用任何int
和char* []
变量调用other_function
,您不必(也可能不应该)覆盖argc
和argv
argc
和 argv
应被视为只读。它们不属于你。声明您自己的 int
和 char* []
变量并将您的内容放在那里,然后将它们传递给 other_function
。
【参考方案1】:
试试这样的:
#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;
【讨论】:
以上是关于用字符串填充argv(并获取argc)以传递给其他方法[重复]的主要内容,如果未能解决你的问题,请参考以下文章