我在这方面还很陌生,所以这可能是非常简单的事情,我也可能会在词汇方面失败,但无论如何我都会问,因为我自己想不通。
我正在制作一个程序,它要求不同的命令来更改某些坐标,如果您给出一个空命令,它只会要求一个新命令。问题是如果你给程序一个输入文件来读取命令 (像这样: ./myprogram < 输入文件 ) 那个文件是空的,它以循环结束并无休止地要求一个新命令。当没有更多输入可读时,它应该能够退出程序。但是它怎么能有所不同,因为它不知道命令是从文件中给出还是一次一个?或者有什么办法让它知道吗?毕竟,如果一次一个地手动给它们,一个空命令并不意味着不会有更多的命令。我希望这听起来不会太傻...
最佳答案
我不完全确定“命令”对您来说是什么,但听起来好像您正在阅读单独的行并且您想排除空(或拼写错误)的行。一个简单的方法是读取行,但首先跳过前导空格,直到没有更多行:
for (std::string line; std::getline(in >> std::ws, line); ) {
process(line)
}
表达式 in >> std::ws
跳过所有前导空格,即所有空格、换行符、制表符等。完成后,std::getline()
只读取一行内容并将其放入行
。如果在跳过前导空格后没有任何数据,std::getline()
将失败,因为已到达输入行。如果 line
需要以某种方式解码,您可以将其放入 std::istringstream
并从那里解码。
关于C++:对一个空输入使用react与空输入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9252409/