C++中把char赋值给string?
最近在想怎么输入一段字符串,里面包含回车空格之类的,然后完整的把输入内容输出,但是发现程序输入的时候有时候按回车就直接输出结果,或者回车后字符串就截断了,刚刚试出了一个方...
最近在想怎么输入一段字符串,里面包含回车空格之类的,然后完整的把输入内容输出,但是发现程序输入的时候有时候按回车就直接输出结果,或者回车后字符串就截断了,刚刚试出了一个方法,源程序如下:
#include "iostream"
#include "string"
using namespace std;
void main()
{
string s1;
char s2;
while (cin.get(s2))
{
s1+=s2;
}
cout<<s1<<endl;
}
这样比如输入
he is a boy
he is very happy
然后就能原样输出。
但是程序里面涉及到把char 类型的s2赋值给string类型的s1,char是单个字符,string是字符串,这样赋值为什么可以?是发生什么类型转换了吗?
哪位能够指点一下非常感谢!
比如说s1="abc"s2='d',那就是s1="abc"+'d',是这么理解吗?是两个类型能相加还是string类重载了+=操作符?但是我直接赋值s1=s2也是可以的? 展开
#include "iostream"
#include "string"
using namespace std;
void main()
{
string s1;
char s2;
while (cin.get(s2))
{
s1+=s2;
}
cout<<s1<<endl;
}
这样比如输入
he is a boy
he is very happy
然后就能原样输出。
但是程序里面涉及到把char 类型的s2赋值给string类型的s1,char是单个字符,string是字符串,这样赋值为什么可以?是发生什么类型转换了吗?
哪位能够指点一下非常感谢!
比如说s1="abc"s2='d',那就是s1="abc"+'d',是这么理解吗?是两个类型能相加还是string类重载了+=操作符?但是我直接赋值s1=s2也是可以的? 展开
3个回答
2010-04-13 · 知道合伙人数码行家
关注
展开全部
while (cin.get(s2)) //按字符逐个获取到s2中
{
s1+=s2; //将获取的一个字符+到s1的末尾,不是赋值,是+=
}
{
s1+=s2; //将获取的一个字符+到s1的末尾,不是赋值,是+=
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
string类型不是基本类型,是一个类,s1是一个string对象,在string类里应该重载了+=操作符,此操作符右边可以接受char类型~你可以去搜一下c++ 的string类的实现,再看看运算符重载的知识。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询