相关疑难解决方法(0)

如何连接std :: string和int?

我认为这很简单,但它存在一些困难.如果我有

std::string name = "John";
int age = 21;
Run Code Online (Sandbox Code Playgroud)

如何组合它们以获得单个字符串"John21"

c++ int concatenation stdstring

631
推荐指数
16
解决办法
61万
查看次数

为什么不将自动向下转换应用于模板函数?

有人问这个关于字符串附加的问题.它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++ downcast template-function

7
推荐指数
1
解决办法
233
查看次数

为什么在 C++ 中,字符串和 int 的复合赋值有效,但字符串到 string + int 的复合赋值却不起作用?

我正在学习 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)

有人可以解释一下吗?

c++ string integer char compound-assignment

5
推荐指数
1
解决办法
56
查看次数