为什么cin.getline()不起作用(C ++)?

时间:2015-09-12 08:28:18

标签: c++ input output cin

#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语句中时,它不再有效。那是为什么?

谢谢

1 个答案:

答案 0 :(得分:1)

dragContainer不起作用。它完全按照它提出的要求:读取文本行直到下一个换行符。恰好发生RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^administrator.v1/(.*) admin/$1 读取了一些数字,然后在输入缓冲区中留下了第一个非数字输入 - 除非你输入的数字不是数字,否则通常是换行符。

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

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