在c++里如何输入一个string类的字符串,我定义的是字符串变量string str,比如输入c a s t中间有空格呀

如果用cin>>那碰到空格就截止了,如果用cin.getline(str,100)好像写法不对,那怎末从键盘输入string类的字符串呢,请教达人们!那string类和c... 如果用cin>>那碰到空格就截止了,如果用cin.getline(str,100)好像写法不对,那怎末从键盘输入string类的字符串呢,请教达人们!
那string类和char*p这两个的关系是什么,难道是string str;char*p=str,应该不对,那怎样把string类的字符串赋给p???具体写法是什么????
展开
 我来答
郑诚的秘密
2009-08-17
知道答主
回答量:79
采纳率:0%
帮助的人:22.9万
展开全部
如果是一个字符型数组的话,可以用cin.getline(str,100);
但是如果是string类的字符串,由于string类字符串不指定长度的,因此不能用这条语句。
应该直接用cin>>str;但是string类不能存放多个字符串,也就是说中间不能有空格,要输入 c a s t这样的建议使用字符型数组或者字符型指针,然后用cin.get(str,100).get();或分开写,cin.get(str,100);cin.get();
这样输入,老式编译器不支持不带参数的get(),可以用char ch;get(ch);来代替cin.get();
忘至白葬不情必0T
2009-08-17 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:90%
帮助的人:1.2亿
展开全部
char *到string类可以直接用=,因为string类重载了=操作符,而且提供了以char *为源的拷贝构造函数.
但string到char *就不能用=了,string类的c_str()函数可以返回它的字符串的首地址,你可以用如下方法将string赋给char *.

#include <iostream>
using namespace std;

void main()
{
string a="abcd";
char *p;
p=new char[a.length()+1];
strcpy(p,a.c_str());
cout<<p<<endl;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xdg1981
2009-08-17 · TA获得超过933个赞
知道小有建树答主
回答量:527
采纳率:0%
帮助的人:0
展开全部
如果你用cin>>或scanf()函数的话,遇到空格会返回;
如果你用gets()函数的话,遇到空格就不会返回了,遇到回车才返回;
gets()格式:

char *p;
gets(p);
那么字符串就以p为首地址存放,记得给p分配足够的空间就好。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hupei502
2009-08-17
知道答主
回答量:36
采纳率:0%
帮助的人:6.1万
展开全部
#include<iostream>
using namespace std;

int main()
{
string str1;
char str2[20];

int l1,l2;

getline(cin,str1);//输入
l1=str1.length();//计算字符串长度

gets(str2);//输入
l2=strlen(str2);//计算字符串长度

cout<<"str1: "<<str1<<"\t\tlength str1: "<<l1<<endl
<<"str2: "<<str2<<"\t\tlength str2: "<<l2<<endl;
system("pause");
return 0;
}

//DEV-CPP
慢慢体会……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
girlwraith
2009-08-17 · 超过41用户采纳过TA的回答
知道答主
回答量:113
采纳率:0%
帮助的人:0
展开全部
补充1楼的, 声明p的时候可以用
char p[100]; 这样免除使用动态内存
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式