我试图将表示字符的ASCII值的int转换为单字符字符串.
我尝试了以下,它不起作用:
string s1=(char) 97;
但是,只有当我像这样分开分配时,转换才有效:
string s1;
s1=(char) 97;
我很困惑,任何人都可以解释这个区别吗?
提前致谢!
我尝试了以下,它不起作用:
string s1=(char) 97;
那是因为std::string构造函数没有任何需要单个的重载char.而且,复制被省略,因此构造函数被直接调用,operator =()永远不会被调用(在复制省略上记录自己).
只有当我像这样分开分配时,转换才有效:
string s1; s1=(char) 97;
现在副本没有任何省略的更多,你真的叫std::string::operator =()其确实具有过载接受单一char.