首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

c++的输入有关问题(getline())。好奇怪。

2013-07-08 
c++的输入问题(getline())。。好奇怪。。int main(){string schar acinacout a endlgetline(cin,s

c++的输入问题(getline())。。好奇怪。。
int main()
{
    string s;
    char a;
    cin>>a;
    cout << a << endl;
    getline(cin,s);
    cout << s;
}

为什么在输入一个字符给a之后,然后终端里会显示输入的a的值,然后程序就结束了?为什么不让我再输入字符串s了呢?

如果在输入a的时候不是输入一个字符而是一个字符串,比如“aaa tttt”,则终端里会出现:
a
aa tttt
然后程序结束。

这是为什么呢请问?谢谢各位了! C++ String cin getline 输入
[解决办法]

引用:
Quote: 引用:

stdin是缓冲式输入,必须在输入换行后才读入a.
但是它只把第一个字符读出,并不处理输入缓冲区中的换行符。
然后getline遇到了换行符,输入结束。

在getline之前加一句:
cin.ignore(0x7fffffff,'\n');

那我为什么把getline(cin,s);换成cin>>s;就可以了呢?cin不会遇到了缓冲区里的换行符就输入停止么?谢谢!


>>操作符会跳过所有的空白字符,然后输入直到又遇到空白字符。所以这时可以输入,因为它跳过了缓冲区中的换行符。

但是,它不能代替getline,因为它会在再次遇到空白字符时停止输入:

输入:
abc 123 xyz

用getline会得到“abc 123 xyz”,用>>会得到“abc”。

热点排行