我正在创建一个简单的命令解析器使用c + +,我试图用istream >>来检查我是否输入一个数字或字符。C++:istringstream
输入:
a = 10
b = a
parser.cpp:
string inputLine, varLeft, equal, varRight;
double varValue
// please see update below
while(getline(cin, inputLine)){
istringstream stringSplitter(inputLine);
stringSplitter >> varLeft >> equal;
if(!(stringSplitter >> varValue)){
stringSplitter >> varRight;
}
}
的目标是,在后面的代码,如果varRight是空的,我假定输入行是一个double
文字,否则,它是一个表示变量的字符串。我知道可能存在与以数字开头的混合输入相关的逻辑错误,但我认为现在所有输入都格式正确。为什么第二行输入中的a
被丢弃?你有什么解决方案?
更新
的问题是不是与while循环语句,它是在同时代码块结束的if语句。
在实际的代码中,循环实际上并不是一个while循环;我正在使用一个包含字符串命令的矢量对象,并使用一个使用迭代器遍历矢量的for循环遍历它们。但是,为了取悦评论者,我已经将其固定在上面。
这完美地工作。关于while循环,请参阅上面的更新。非常感谢您的帮助。 – naxchange 2013-03-03 21:22:46
但他怎么检查'stringSplitter >> varRight;'成功了吗? – 0x499602D2 2014-01-19 16:58:44