我实际上是在尝试学习C ++,我必须编写一个程序,从文件中读取一系列以空格分隔的整数,然后计算总和。练习它并不难,我想出了这个函数来读取文件中的数据:
// read whitespace-separated integers from a file
void fill_from_file(vector<int>& integers, const string& name)
{
ifstream ist{ name };
if (!ist) error("Can't open input file : ", name);
for (int i; ist >> i;) integers.push_back(i);
}
所以基本上我只是继续从文件读取整数直到文件结束。我已经学习了使用Stroustrup的书籍编程原理和使用C ++实践来处理文件的基础知识,但是在处理文件时我对错误处理有些怀疑。
本章的例子中的作者只是展示了抛出异常处理文件中的错误,而不是编写输入循环,他试图从失败的读取中恢复,就像我们从键盘输入一样。
Q1)从文件中读取数据时处理格式错误的最佳方法是什么?例如,假设我的函数找到'x'而不是整数,我应该尝试从此错误中恢复吗?或者我应该放弃并放弃尝试从该文件中读取更多数据?
Q2 另一个例子:在同一个程序中,但是使用来自cin的输入,作者显示了skip_to_int()函数的使用,该函数在读取失败后跳过字符,直到找到整数。这种方法对于文件也是值得的吗?这种方法对于像这样的简单程序是否值得?