我认为这很简单,但它存在一些困难.如果我有
std::string name = "John";
int age = 21;
Run Code Online (Sandbox Code Playgroud)
如何组合它们以获得单个字符串"John21"?
有人问这个关于字符串附加的问题.它string s; s = s + 2;没有编译.人们给出了答案,说明operator+被定义为模板函数而operator+=不是,因此不应用自动向下转换(int(2)to char(2)).
原型是
template<typename _CharT, typename _Traits, typename _Alloc>
class basic_string{
basic_string&
operator+=(_CharT __c);
};
template<typename _CharT, typename _Traits, typename _Alloc>
inline basic_string<_CharT, _Traits, _Alloc>
operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, _CharT __rhs);
Run Code Online (Sandbox Code Playgroud)
为什么编译器不能只使用这个原型并将int(2)转换为char(2)?
basic_string<char, _T, _A> operator+(const basic_string<char, _T, _A>, char);
Run Code Online (Sandbox Code Playgroud)
编译器(G ++ 6.3.0)抱怨说
[Note] deduced conflicting types for parameter '_CharT' ('char' and 'int')
Run Code Online (Sandbox Code Playgroud) 我正在学习 C++,遇到了一个我不太理解的有趣困境。
我的目标是将字符串与 int 值的 char 表示形式连接起来,例如“a”。我的问题是:
string a = "bo";
a = a + 97;
Run Code Online (Sandbox Code Playgroud)
还不能用
string a = "bo";
a += 97;
Run Code Online (Sandbox Code Playgroud)
做。
我知道一个意思是添加,另一个意思是连接,但我已经看到了这样的例子
a += 1;
Run Code Online (Sandbox Code Playgroud)
是相同的
a = a + 1;
Run Code Online (Sandbox Code Playgroud)
有人可以解释一下吗?