我正在使用 c++ 创建一个简单的命令解析器,并且我正在尝试使用 istream >> 检查我输入的是数字还是字符。
输入:
a = 10
b = a
解析器.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 循环语句,而在于 while 代码块末尾的 if 语句。
在实际代码中,循环实际上并不是一个while循环;我正在使用一个包含字符串命令的向量对象,并使用 for 循环遍历它们,该循环使用迭代器遍历向量。但是,为了取悦评论者,我在上面修复了它。