#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,那么他可以输入整个句子并将其存储在文本的 char 数组中。我的问题是,当我将 cin.getline() 放入 if 语句中时,它不再起作用。这是为什么?
谢谢
最佳答案
并不是 cin.getline()
不起作用。它完全按照要求执行:读取文本行直到下一个换行符。碰巧 cin >> input;
读取了一些数字,然后将第一个非数字输入留在输入缓冲区中 - 这通常是换行符,除非您键入的内容不是数字.
您可以通过调用cin.ignore()
来解决这个问题,它将“读取直到下一个换行符的所有内容并将其丢弃”。
理想情况下,您应该决定是否要使用 cin >>
还是 cin.getline()
,并使用其中之一,但这意味着然后读取文本字符串并在代码中转换为数字,如果您是新手,这可能比您实际想要的要复杂一些。
关于c++ - 为什么 cin.getline() 不起作用(C++)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32536789/