我正在读取多个文件。这些文件大约有 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;
}
检查文件结尾是没有意义的before你读。试试这个循环结构:
char buffer[256];
while (inFile.getline(buffer, 100)) {
cout << "HEY";
}
或者,更好的是,
std::string buffer;
while (std::getline(inFile, buffer)) {
cout << "HEY";
}
编辑:修复字符串版本中的愚蠢错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)