C++-string对+=的重载问题

发布于 2017-02-01 13:29:56 字数 104 浏览 1087 评论 3

string s1 = "1234";
s1 += 9+'0';//-------1
s1 = s1 + 9 + '0';//-----2
为什么1不报错,2会报错?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

夜无邪 2017-09-28 05:54:07

g++编译结果如lz所说,我稍做修改,贴出运行结果,期待别人回答:
string s1 = "1234";
s1 += 9;

cout << s1<<endl;
输出:1234

string s1 = "1234";
s1 += 9+‘0’;

cout << s1<<endl;
输出:12349

string s1 = "1234";
s1 += 9+“0”;

cout << s1<<endl;
输出1234

清晨说ぺ晚安 2017-06-08 20:42:14

VC++ 2005下,1和2都会报错。(用的是CString)
你用的什么编译器?

晚风撩人 2017-03-14 19:38:19

首先,明确一件事:std::string是标准库的东西,string重载了+=和+,函数分别是operator+=和operator+,这两个函数都是带参数的,要知道+=和+后面能接什么类型,得看所在平台的STL的实现,如VS实现的STL中,重载的+=可以接Elem(char/wchar_t)、string、const Elem(char/wchar_t)*三种类型

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文