繁体   English   中英

fstream文件结束问题

[英]fstream end of file question

我正在阅读多个文件。 这些文件大约有300个。 出于某种原因,如果我将循环设置为运行3次迭代,则应该遍历每行的while循环变为无限。 我的问题是:我忘记在我的while循环中包含哪些东西? 现在我只是尝试一次读取一行,最终在输出文件中保存一些数据。 或者数据文件中是否包含不允许程序到达文件末尾的内容?

ifstream inFile;
ofstream outFile;
char outputFilename[] = "output.txt";
int i;

outFile.open(outputFilename, ios::out);

for (i = 1; i < 4; i++) {
    stringstream inputFilename;
    inputFilename << "data/" << i << ".txt";
    inFile.open(inputFilename.str().c_str(), ios::in);
    if (!inFile) {
        cout << "Error opening input files" << endl;
        exit(-1);
    }

    char buffer[256];
    while (!inFile.eof()) {
        cout << "HEY";
        inFile.getline(buffer, 100);
    }
    inFile.close();
}
outFile.close();

更新:这效果更好

char buffer[256];
    while (!inFile.eof()) {
      inFile >> buffer;
    }

阅读之前检查文件结尾是没有意义的。 请尝试使用此循环构造:

    char buffer[256];
    while (inFile.getline(buffer, 100)) {
      cout << "HEY";
    }

或者,更好的是,

    std::string buffer;
    while (std::getline(inFile, buffer)) {
      cout << "HEY";
    }

编辑:修复字符串版本中的stoopid错误。

再次!

除此之外:

while (!inFile.eof()) {
          cout << "HEY";
          inFile.getline(buffer, 100);

应该:

while ( inFile.getline(buffer, 100) ) {
          cout << "HEY";

作为eof()的文件想法或咨询会告诉你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM