首先 - 我手头上有一个文本文件,其中包含二进制数字,每行一个数字。我想在C++程序中读取它们并将它们相加。我编写了一个函数,将它们转换为十进制数并在此之后将它们相加,我很确定这个函数是正确的。但是,对于这两种不同的读取文本文件的方式,我得到了不同的结果(只有其中一个结果是正确的)[我的函数是decimal()]:
ifstream file;
file.open("sample.txt");
int sum = 0;
string BinaryNumber;
while (!file.eof()){
file >> BinaryNumber;
sum+=decimal(BinaryNumber);
}
这样我的总和就太大了,但只差一个很小的数量。
ifstream file;
file.open("sample.txt");
int sum = 0;
string BinaryNumber;
while (file >> BinaryNumber){
sum+=decimal(BinaryNumber);
}
通过这种方式,我得到了正确的总和。经过一些测试,我得出结论,使用eof()的while循环比另一个while循环多进行一次迭代。那么我的问题是 - 从文本文件中读取的这两种方法有什么区别?为什么第一个while循环给我错误的结果,它可能做了额外的迭代?
file >> variable
检查输入后的file
状态。每当您输入错误或达到 EOF 时,条件为false
。 - πάντα ῥεῖeof()
返回先前读取操作的状态,并且直到你读取完流的末尾后才返回false。 - Captain Obvlious