为什么cin.getline()不能工作(c++)

Why does cin.getline() not work (C++)?

本文关键字:工作 c++ 不能 cin 为什么 getline      更新时间:2023-10-16
#include <iostream>
using namespace std;

int main(int argc, char** argv) {
char text[200];
int input;

cin>>input;
if (input == 1)
{
    cin.getline(text, 200);
    cout<<text<<"n";
}
else if(input == 0)
{
    cout <<"You entered a 0";
}
return 0;
}

我正在尝试制作一个小程序,其中用户给出输入1或0。如果用户输入一个1,那么他可以输入一个完整的句子,并将其存储在文本的字符数组中。我的问题是,当我把cin.getline()内的if语句不再工作。为什么呢?

谢谢

这不是说cin.getline()不工作。它完全按照要求去做:读取文本行直到下一个换行符。碰巧cin >> input;读取了一些数字,然后在输入缓冲区中留下了第一个非数字输入-除非您键入的不是数字,否则通常是换行符。

你可以通过调用cin.ignore()来解决这个问题,它将"读取直到下一个换行符的所有内容并将其丢弃"。

理想情况下,您应该决定是否要使用cin >>cin.getline(),并使用一个或另一个,但这意味着然后读取一串文本并在您的代码中转换为数字,如果您是新手,这可能比您实际想要的更复杂。