在他们混合使用时有时会出现无法输入字符串或者字符串多出空格的情况
原因如下:
cin和scanf再输入完成后会在输入缓冲区留下一个空格或者\n(看你在输入时用什么结尾的)
而下一个cin和scanf会直接忽视这个剩下的空格或者\n,读入你新的输入
但是getline,getchar,cin.getline并不会忽略这个空格或者\n,他们会把这个读入
如果cin或者scanf留下的是空格,那么下面使用getline,getchar,cin.getline输入的字符串前面会多一个空格
如果cin或者scanf留下的是\n,那么下面使用getline,getchar,cin.getline会读入该\n并且认为是你输入了\n从而直接结束输入
解决方法:
在使用完cin和scanf后,加上一句getchar()吃掉余留的空格或者\n,然后再使用getline,getchar,cin.getline
注意:
1.cout和printf并不会影响
2.getline,getchar,cin.getline本身不会残留空格或者\n