C++-string对+=的重载问题
string s1 = "1234";
s1 += 9+'0';//-------1
s1 = s1 + 9 + '0';//-----2
为什么1不报错,2会报错?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
string s1 = "1234";
s1 += 9+'0';//-------1
s1 = s1 + 9 + '0';//-----2
为什么1不报错,2会报错?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
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
VC++ 2005下,1和2都会报错。(用的是CString)
你用的什么编译器?
首先,明确一件事:std::string是标准库的东西,string重载了+=和+,函数分别是operator+=和operator+,这两个函数都是带参数的,要知道+=和+后面能接什么类型,得看所在平台的STL的实现,如VS实现的STL中,重载的+=可以接Elem(char/wchar_t)、string、const Elem(char/wchar_t)*三种类型