C++中cin.getline()问题?

源程序如下:#include<iostream>#include<cstring>usingnamespacestd;intmain(){stringliu,d,c;in... 源程序如下:
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
string liu, d, c;
int b;
cout <<"请输入liu字符:";
cin.getline(liu); //这里报错
b=liu.size();
cout << b <<endl;
for(int i = 0; i <= b; i++){
c=liu.substr(i,1);
if (c==" " or (c>="a" and c<="z") or (c>="A" and c<= "Z"))
d=d+c;
}
cout << d << endl;
system("pause");
return 0;
}
不知怎么回事,老报错,高手帮帮忙,谢谢
展开
 我来答
niinor
推荐于2016-04-18 · TA获得超过2246个赞
知道小有建树答主
回答量:2047
采纳率:0%
帮助的人:1358万
展开全部
最佳答案!!!

#include<iostream>
#include<cstring>
using namespace std;
int main()
{
string liu, d, c;
int b;
cout <<"请输入liu字符:";
getline(cin,liu);//这样就不会报错了,cin.getline()的话,需要字符串的长度作为第二参数的,在不知道的情况下,还是这样吧
b=liu.size();
cout << b <<endl;
for(int i = 0; i <= b; i++)
{
c=liu.substr(i,1);
if (c==" " or (c>="a" and c<="z") or (c>="A" and c<= "Z"))
d=d+c;
}
cout << d << endl;
system("pause");
return 0;
}
shy2850
2009-11-27 · TA获得超过6774个赞
知道大有可为答主
回答量:2505
采纳率:55%
帮助的人:1588万
展开全部
使用错误!!!

此函数是按行读取,其语法为cin.getline(i,b),i为要读取的数据,而b为要读取数据的长度.
cin.getline(字符指针,字符个数N,结束符);
功能是:一次读取多个字符,直到读满N个,或者遇到指定的结束符为止。
例:
#include <iostream>
using namespace std;
void main()
{
int a[10];
cin.getline(a,sizeof(a));
for(int i=0;i<10;i++)
{
cout<<a[i]<<" ";
}
}
输入:1 2 3 4 5 6 7 8 9 0
输出:1 2 3 4 5 6 7 8 9 0

参考资料: http://baike.baidu.com/view/2383876.html?wtp=tt

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2009-11-27
展开全部
cin.getline()参数是一个字符数组和一个整数(表示最多读取的字符数),不是一个string类型的参数。

//---------------------------------------------------------------------------
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
char liu[80], d[80]={0},c;

int b;
cout <<"请输入liu字符:";
cin.getline(liu,79); //这里报错

b=strlen(liu);
cout << b <<endl;
for(int i = 0; i <= b; i++){
c=liu[i];
if (c==' ' || (c>='a' && c<='z') || (c>='A' && c<= 'Z'))
strncat(d,&c,1);
}
cout << d << endl;
system("pause");
return 0;
}

//---------------------------------------------------------------------------
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蛮炎中贤惠
2019-02-01 · TA获得超过3582个赞
知道大有可为答主
回答量:3181
采纳率:29%
帮助的人:223万
展开全部
cin>>n;
后面加一句
cin.ignore();
用来把输入数字后面的回车跳过。不然遇到
cin.getline()
时缓冲区第一个字符是回车,它就直接跳出了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
江小右
2009-11-27 · TA获得超过6928个赞
知道小有建树答主
回答量:1195
采纳率:0%
帮助的人:830万
展开全部
cin.getline(liu,sizeof(liu));
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式