文件读取不正确
File not reading in correctly
我有一个读取文件的程序。我所有的类都编译得很好,但在读取文件时似乎出现了错误。Eclipse显示正在读入一个空字符串("),这不是我想要的。
下面我有一个while循环的main代码。我放置循环只是为了看看它在调试时会如何运行,它运行一个无限循环,因为它总是在"中读取,并且永远不会到达文件末尾。我已经把文件放在工作目录和其他文件夹中,只是为了确定,但它总是这样做,即使文件中充满了字符串和整数。我在这里做错了什么吗?
#include "Translator.h"
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
using namespace std;
int main(int argc, char* argv[])
{
ifstream readFile;
readFile.open("sample.html");
while (!readFile.eof()) // for debugging purposes only
{
string x;
readFile >> x; // x is "" everytime through the loop
readFile >> x; // x is also ""
}
Translator t(readFile);
readFile.close();
return 0;
}
我的猜测是,您的文件实际上并没有打开,因此eof
位没有设置。您永远不会测试文件是否已成功打开。这可能是因为您的工作目录不是您认为的那样,或者文件被另一个进程锁定(可能在文本编辑器中打开)。
官方表示,您可以在尝试打开后测试readFile.fail()
。
我发现检查readFile.good()
也很好——事实上,您可以将其用作循环条件。
我更喜欢代码中"好"的积极信息,而不是潜在的令人沮丧的"失败"。
当你阅读数据时,你还应该按照WhozCraig在评论中建议的那样测试你的流。您不能认为操作成功。如果它失败的原因不是EOF,你需要知道。
由于这些原因,不要使用readFile.eof()
作为循环条件。
相关文章:
- C++ 读取文件读取文件不正确
- C++:读取字符是不正确的
- 读取来自提升binary_iarchive不正确的数据
- 使用 c++ 时从二进制文件中读取 int 不正确
- 为什么当我使用双精度时,Qt<->Matlab 正确写入和读取我的字节,但存储 uint32 的字节不正确?
- 尝试使用 ifstream 读取数据后显示不正确的数字
- 结构C++ – 从文件中读取不正确
- 结束标记 xml 验证在提升 ptree 读取 xml 中不正确
- 为什么我的getline不正确读取.csv文件
- 逐行从文件读取到矢量对于<T>二进制数据C++不正确
- 从堆栈中读取字符后,如何修复不正确的文件输出
- 读取PPM文件并使用Opengl和c++进行显示.颜色不正确
- 写入和读取 bin 文件数据不正确
- boost::local_time 读取不正确的iso_extended_format
- 从 matlab 中的二进制文件读取不正确
- 读取并显示文件,但输出不正确
- c++的新功能,scanf不能正确读取/打印输入
- 文件不能正确读取c++ ifstream
- 不正确的输入和读取
- UDP数据读取不正确(延迟)