为什么编译器在一个周期后终止?

时间:2015-04-13 02:06:13

标签: c++

我写这段代码时遇到问题

string x;
float num;
while(true){
    getline(cin,x);
    if(x=="")break;
    cin >> num;
}

编译器在一个周期后终止并打印新行

输入:例如"Hello"和5.5

1 个答案:

答案 0 :(得分:4)

cin >> num读取数字,但不会读取后面的换行符。因此,下次循环运行时,getline()将读取剩余的空行。

你不应该将cin >>getline()混在一起,它经常会导致这样的问题。用getline()读取每一行并解析它。