C++字符串输入操作

         问题1:输入为一行字符串被中间被一些空格隔开,要求提取这些被空格隔开的字符串.

         方法:直接使用cin,因为cin遇到空格附,换行附,\0,EOF等会停止输入

     

string s;	
while(cin>>s)	
{
        cout<<s<<endl;
}

          问题2:输入为一行字符串被中间被一些空格隔开,要求提取整行字符到一个字符数组中

          方法:使用cin.get(char* p,int pcount)或者cin.getline(char*p int pcount),第一个参数为存储的指针,第二个参数是输入的字符个数,要注意的一点是程序在遇到分隔符或到达文件结束之前,只会读入pcount-1个字符,第pcount个字符用null(0)代替.

 

char a[100];
cin.get(a,5);
//gets(a);这种方法也可以
int b=strlen(a);
int c=sizeof(a);
cout<<b<<c;

           上述代码值得注意的一点是strlen判断的是从a[0]到a中第一个值为NULL(0)之前的的元素的个数,而sizeof判断的是整个数组的大小。

          问题3:问题2中要用string存储字符串

string a;
getline(cin,a);
cout<<a<<endl;

          

        值得注意的问题(1):输入流中的终结符问题,cin.get()当在头和尾部遇到终结符时,会直接返回null,在中间遇到终结符时,会将终结符留在输入流中,等待下一次cin.get()

char a[33]
cin>>n;
while(n--)
{
        getchar();
        cin.get(a,33);
}	

       上述代码中,必须要使用getchar()获取终结符,才能顺利输入字符串,再看下面代码

string a
cin>>n;
while(n--)
{
        getchar();
        getline(cin,a);
}	

 

       上面的代码也必须加上getchar();再看下面代码

 

 

string a
cin>>n;
while(n--)
{
       cin>>a;
}	

 

    则不需要getchar(),因为cin会自动判断string类型

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值