7

我正在尝试将表示字符的 ASCII 值的 int 转换为单字符串。

我尝试了以下方法,但它不起作用:
string s1=(char) 97;

但是,只有当我像这样分解分配时,转换才有效:
string s1; s1=(char) 97;

我对此感到困惑,任何人都可以解释其中的区别吗?


提前致谢!

4

1 回答 1

8

我尝试了以下方法,但它不起作用:string s1=(char) 97;

那是因为std::string构造函数没有任何需要单个char. 而且,复制被省略了,因此直接调用构造函数,operator =()从不调用(在复制省略上记录自己)。

只有当我像这样分解分配时,转换才有效:string s1; s1=(char) 97;

现在副本不再被省略,你真的在​​调用std::string::operator =()确实有一个接受单个char.

于 2013-09-21T23:34:51.800 回答