请原谅任何无知,我是新来的C++。得到升压命令行来解析我提供的数组而不是argv - 模仿argv
我想为我的命令行程序使用boost program_options和commandline解析器。该程序使用getline获取用户输入的一些命令。我想解析它,所以它可以通过提升,但我似乎无法得到正确的类型。我仍然在学习指针和所有爵士乐,但我有一段艰难的时光。
这里的代码,这样你可以得到什么,我试图做一个想法:
namespace po = boost::program_options;
int _tmain(int argc, _TCHAR* argv[])
{
std::string input;
_TCHAR* parsedInput[20];
while (std::cin) {
std::getline(std::cin, input);
boost::split(parsedInput, input, boost::is_any_of(" "), boost::token_compress_on);
po::options_description desc("allowed options");
desc.add_options()
("help", "produce help message")
("compression", po::value<int>(), "set compression level")
;
po::variables_map vm;
po::store(po::parse_command_line(5, parsedInput, desc), vm);
po::notify(vm);
if (vm.count("help"))
std::cout << desc << "\n";
}
return 0;
}
po::store(po::parse_command_line(5, parsedInput, desc), vm);
5是任意的只是,而我努力使这项工作。
随着代码我不完全确定我的问题是什么,但我认为它实际上是分裂输入有关,这是当前的错误信息error C2078: too many initializers
。
我最初将输入分割为一个字符串向量,这让我过去了那个错误,但后来我遇到了错误类型的po::parse_command_line(5, parsedInput, desc)
,我认为它不能接受一个字符串向量。看了看似乎是这样的documentation。
如果任何人都可以给我一只手或指向正确的方向,我将不胜感激。谢谢。
我不知道你在跳过什么,但'parse_command_line'不需要'vector'。你可能会更好地发布你最初的尝试,因为这肯定是一条糟糕的道路。 – user4581301
典型的用法是'parse_command_line(argc,argv,desc)',假设'_TCHAR'被定义为友好的。更多阅读这里:[将_TCHAR *转换为char *](https://stackoverflow.com/questions/19301538/converting-tchar-to-char) – user4581301