注册 登录
编程论坛 C++教室

求教:字符数组中有空格就不能循环输入吗?

发布于 2010-04-28 00:47, 2130 次点击
我写了一段很简单的程序(如下),就是多次输入姓名,然后打印在屏幕上。 因为每个姓名中间有一个空格,如Jone white; Herry Bott;
每次第一输入的时候都没问题,但是第二次循环的时候,就出问题,不能输入了。想了很久,也不知道为什么。希望各位牛人指点!跪谢了。
#include<iostream>
#include<iomanip.h>

using namespace std;

int main(){
   
   char name[20];
   
   int i=0;
   while(i!=1){
       cout<<"input name :   ";
       cin.getline(name,20);
       cout<<endl;
      
       cout<<setw(20)<<name<<endl;
      
       cout<<"input i=0 for continure or 1 to finish" <<endl;
       cin>>i;
               
               }
     
     
   system("Pause");
   return EXIT_SUCCESS;
    }
6 回复
#2
2010-04-28 10:42
自己回一个。
问题解决了,cin 和 cin.getline()不兼容, 输入cin的回车 被getline当成下一个字符串了
#3
最近不在2010-04-28 15:21
cin.getline()会将回车的换行符作为输入的结束。并用空值字符替换换行符,因此对下一次使用cin.getline()不会有影响。但是你while循环里面最后又个cin>>i;
那么当这次循环完,下一次循环用cin。getline()会读取上一次的输入完i后的换行符。解决这一问题的方法,就是用cin。get()读取换行符(enter),然后用cin。getline。
程序代码:
// Note:Your choice is C++ IDE
#include <iostream>
using namespace std;
int main()
{
   
    int n;
    //cin>>n;
        
//cin.get();
    char a[20];
   
    cin.getline(a,20);
    cout<<a;
    return 0;
}

注意看有无引去代码的区别
#4
2010-04-28 20:23
有前途…
#5
南国利剑2010-05-03 19:50
恩,有收获哦。
楼上两位很厉害!
受教受教!
#6
tula2010-05-04 16:48
又学了一样
#7
guowei37582010-05-04 17:53
这个我也不明白,现在懂了
1