文件异常和光标移动c++

file exception and cursor movement c++

我在读取文件时使用异常处理来确定我希望存储在变量中的部分是否属于正确类型(例如,我不想将字符串存储在双精度变量中),但是当异常发生时,光标不会移动到下一行。有什么可行的方法吗?

如果 enabled exception 输入 incorrect/failed,输入流中的第一个错误字符将引发异常。

如果您的错误处理包括跳过该行的其余部分以继续处理下一行,则您必须 clear the error status and then to ignore 该行的未读字符。在您的异常处理代码中添加以下内容:

InputFile.clear(); // without this, every subsequent file op would fail 
InputFile.ignore(std::numeric_limits<std::streamsize>::max(),'\n');

但是您应该小心,因为 >> 从流中读取也可能会跳过换行符,因此丢失的数据可能会使您已经在下一行。一种更安全的方法是使用 std::getline() 逐行读取流并使用 stringstream.

解析每一行