所以这将是一个愚蠢的问题,但我现在不能想到这一点...这下面的do-while循环并没有像它应该的那样终止。
do {
if(inp.eof())
throw("Unexpected end of file");
getline(inp, l);
line++;
std::stringstream com(l);
com >> command;
if(command == ">>") {
std::cout << "Why?" << std::endl;
break;
}
} while(command != ">>");
从这个循环开始,如果命令变成“&gt;&gt;”,它应该以两种方式结束吗?不幸的是,我的代码只输出“为什么?”在if中,完全忽略break语句,并继续循环直到最终我到达inp.eof(),它会抛出一个错误。这应该是基本的,但不知何故,我不知道它在做什么。
编辑:更新:当我将其更改为while(true)并保留break语句时,它完美地运行。将其更改为do-while并且失败。不知道为什么,但是这个糟糕的事情是有效的,而且这就是我现在所关心的。