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;
}
不知怎么回事,老报错,高手帮帮忙,谢谢 展开
#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;
}
不知怎么回事,老报错,高手帮帮忙,谢谢 展开
展开全部
最佳答案!!!
#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;
}
#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;
}
展开全部
使用错误!!!
此函数是按行读取,其语法为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
此函数是按行读取,其语法为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;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#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;
}
//---------------------------------------------------------------------------
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
cin>>n;
后面加一句
cin.ignore();
用来把输入数字后面的回车跳过。不然遇到
cin.getline()
时缓冲区第一个字符是回车,它就直接跳出了。
后面加一句
cin.ignore();
用来把输入数字后面的回车跳过。不然遇到
cin.getline()
时缓冲区第一个字符是回车,它就直接跳出了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
cin.getline(liu,sizeof(liu));
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询