C++ 返回空行或无限循环的EOF
因此,我试图从一个名为C++ 返回空行或无限循环的EOF,c++,eof,getline,C++,Eof,Getline,因此,我试图从一个名为input\u file的文件中读取,直到它到达末尾。我尝试过在(!input_file.eof())时使用,但它仍然是一个无限循环。我在论坛上四处查看并尝试使用while(getline(input\u file,line)),但这只返回一个空行。我没有像其他问题一样同时使用getline()和>>操作符。 我该怎么做?这是我的密码: #include <iostream> #include <fstream> #include <strin
input\u file
的文件中读取,直到它到达末尾。我尝试过在(!input_file.eof())时使用,但它仍然是一个无限循环。我在论坛上四处查看并尝试使用while(getline(input\u file,line))
,但这只返回一个空行。我没有像其他问题一样同时使用getline()和>>操作符。
我该怎么做?这是我的密码:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
// Main program
void CalfFlac(ifstream& input_file) {
string text;
string line;
while (getline(input_file, line)) {
text += line;
}
cout << text << endl;
}
int main() {
ifstream input_file;
input_file.open("calfflac.in");
CalfFlac(input_file);
}
#包括
#包括
#包括
使用名称空间std;
//主程序
作废CalfFlac(ifstream和input_文件){
字符串文本;
弦线;
while(getline(输入文件,行)){
文本+=行;
}
cout编辑:确保您有正确的文件名!我尝试了一个伪造的文件名,它打印了一个空白行作为您的描述。
我用正确的文件名尝试了您的代码,它对我有效
在main中添加此行:
int main() {
ifstream input_file;
input_file.open("calfflac.in");
if(!input_file)
cout << "File path is wrong!";
CalfFlac(input_file);
}
intmain(){
ifstream输入文件;
输入_file.open(“calfflac.in”);
如果(!输入_文件)
我无法重现您描述的问题。甚至尝试了各种行尾组合,如crlf
,lf
,cr
。您在什么平台下测试此问题?您是否检查了文件是否成功打开?assert(input_file);
最好不要使用“assert”检查文件,因为它们在发布模式下同样容易失败!可能重复