具有获取函数的无限循环

Infinite loop with get function

本文关键字:无限循环 函数 获取      更新时间:2023-10-16

谁能告诉我在这里使用 get 函数而不是 getline 有什么问题。Get 在读取一行时完美无休。为什么它在这里不起作用。它导致无限循环。

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;
}

当用char*调用时,就像在你的get(ch,20)中一样,get方法最多会读取 19 个字符或直到它到达分隔符(默认情况下n(。

分隔字符显式读取,因此它仍然是下一个字符。因此,当您第二次调用它时,无需执行任何操作来读取该字符,它会立即将 0 长度的字符串返回到相同的分隔符,一遍又一遍。

由于该行为是getgetline之间的关键区别,如果它不是您想要的行为,请不要使用它。