带get函数的无限循环

时间:2018-05-13 08:20:55

标签: c++

任何人都可以告诉我在这里使用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;
}

1 个答案:

答案 0 :(得分:1)

使用char*调用时,与get(ch,20)一样,get方法最多可读取19个字符,或直到达到分隔符(默认为\n

分隔字符显式读取,因此它仍然是下一个字符。因此,当你第二次调用它时,没有做任何事情来读取该字符,它会立即将0长度的字符串一次又一次地返回到同一个分隔符。

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