請原諒任何無知,我是新來的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