2

所以这将是一个愚蠢的问题,但我现在无法解决这个问题......下面的这个 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 != ">>");

从这个循环中,如果命令变成“>>”,它应该以两种方式之一结束,对吧?不幸的是,我的代码只是输出“为什么?” 在 if 内部,完全忽略了 break 语句,并继续循环,直到最终我到达 inp.eof(),它会抛出一个错误。这应该是基本的,但不知何故,我不知道它在做什么。

编辑:更新:当我将其更改为 while(true) 并保留 break 语句时,它可以完美运行。将其更改回 do-while 并失败。不知道为什么,但该死的东西有效,这就是我现在所关心的。

4

0 回答 0