我想逐个字符地从文件中读取并对每个字符执行特定操作,我正在使用以下循环:
ifstream in
while(in)
{
ch=in.get();
//some operation
}
我暂时不想读取条件中的字符,因为那时光标会移动到下一个位置,我会错过那个字符。 问题是文件末尾没有正确发出信号,最后一个字符被读取了两次。请给出避免这种情况的方法 例如。如果文件中的字符串是 军队 它被读作军队(当我打印时)
最佳答案
char ch;
while(in.get(ch)){ } //or in>>std::noskipws>>c
这将是正确的方式,因为您想要的字符存储在 ch
中。这有什么问题?
如果你真的想要它的方式,那么你可以使用 peek()
来查看下一个字符并执行适当的操作:
char c = in.peek(); //this will give you the next character in the stream
//if its an eof, do appropriate
关于c++ - 从 C++ 中的文件输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18584262/