任何人都可以告诉我在这里使用get函数而不是getline有什么问题。无需任何循环即可完美地读取单行。为什么不在这里工作。它导致无限循环。
int main() {
ofstream outfile;
outfile.open("Myfile.txt", ios::trunc);
outfile <<"aabc"<<endl;
outfile <<"Hello Helloo"<<endl;
outfile <<"3abc"<<endl;
outfile <<"Somee text here "<<endl;
outfile.close();
ifstream infile;
infile.open("Myfile.txt");
char ch[20];
while(!infile.eof()) {
infile.get(ch,20);
cout<<ch;
}
infile.close();
return 0;
}
答案 0 :(得分:1)
使用char*
调用时,与get(ch,20)
一样,get
方法最多可读取19个字符,或直到达到分隔符(默认为\n
)
分隔字符显式不读取,因此它仍然是下一个字符。因此,当你第二次调用它时,没有做任何事情来读取该字符,它会立即将0长度的字符串一次又一次地返回到同一个分隔符。
由于该行为是get
和getline
之间的关键区别,如果不是您想要的行为,请不要使用它。