我有一个带有parse(int argc, char* argv[])
函数的类,我必须使用它来设置对象的所需状态。我正在使用 gui 获取参数stringstream
,然后尝试将它们转换为 char** 以将它们传递给函数。这是我所拥有的:
std::stringstream sstream;
sstream << "-clip" << " " << min_x_entry.get_text()
<< " " << max_x_entry.get_text(); // etc.
std::cout << sstream.str(); // All looks good here
std::vector<std::string> args;
std::vector<char*> argv;
std::string arg;
while (sstream >> arg)
{
args.push_back(arg);
argv.push_back(const_cast<char*>(args.back().c_str()));
}
argv.push_back(0);
int argc = args.size();
for (int i = 0; i < argc; ++i)
std::cout << &argv[0][i]; // This outputs garbage
my_object.parse(argc, &argv[0]) // And this fails
我错过了什么?有没有更好的方法来实现这一目标?