并不是真正询问有关解析命令行参数的问题,而是询问用于读取它们的代码 (C++)
我是用MSVC2010写的。选择Project\DEbugging\Command Line Arguement),我写了如下内容
"testvid" 10000 15000
全部用空格隔开
对于我的读入代码,我使用字符串流来读入它们
string folder;
int begin;
int end;
if(argc = 4){
std::stringstream ssArgConverter;
folder = argv[1];
ssArgConverter << argv[2];
if(ssArgConverter >> begin)
{
// success
ssArgConverter.str("");
}
ssArgConverter << argv[3];
if(ssArgConverter >> end)
{
// success
ssArgConverter.str("");
}
}
已测试该程序,但我似乎无法阅读最后一个参数。我程序中参数的打印值是
folder : testvid
begin : 10000
end : -89456273
就是想不通哪里出了问题。这里需要一些帮助。谢谢
最佳答案
您需要清除您的字符串流,而不是将其内容设置为“”。
string folder;
int begin;
int end;
if(argc == 4){
std::stringstream ssArgConverter;
folder = argv[1];
ssArgConverter << argv[2];
if(ssArgConverter >> begin)
{
// success
ssArgConverter.str("");
ssArgConverter.clear();
}
ssArgConverter << argv[3];
if(ssArgConverter >> end)
{
// success
ssArgConverter.str("");
ssArgConverter.clear();
}
}
编辑: 这个问题非常类似于:How to clear stringstream?接受的答案有很好的解释。
所以你实际上应该使用 .str("") 或 .str(std::string()) 和 .clear()
关于c++ - 在 MSVC 中解析命令行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27933655/