C++中字符串输入问题

来源:百度知道 编辑:UC知道 时间:2024/09/21 15:52:01
用cin.getline时,如果前面没有cin>>,输入正常
如果前面用cin>>输入过数据,到这步就直接跳过
请高手指教一下怎么解决?

看输入是什么
>>是不会读取流中的换行符的

比如输入如下:
23 <换行>
hello world <换行>

读取如下:
int a; char s[100];
cin>>a;
也就是说,你用cin>>a后,23被读走,流中还有一个换行符。
然后这个时候你getline,读到的只有换行符。读到的换行符被扔掉,接受到的字符串为空串(换行符前没有其它字符)。

现在换行符被读走了,再用一次getline即可得到想要的答案"hello world"
并且应该注意的是,getline是会读走换行符的,但不会把换行符写到"hello world"后面,只是读了,扔掉~

你用其他的结束符,例如:cin.getline(arrayname,length,'0');就是说当输入0并按下回车才能结束输入,这样可避免cin>>输入留下的换行符干扰;当然你可以指定其他的结束字符

cin>>
后面在加一个cin.ignore()的话就可以了

cin.getline前用getchar()函数行不?