我正在尝试将表示字符ASCII值的int转换为单字符字符串。
我尝试了以下操作,但它不起作用:
string s1=(char) 97;
然而,只有当我像这样分开任务时,转换才有效:
string s1;
s1=(char) 97;
我对此感到困惑,任何人都能解释其中的差异吗?
提前致谢!
答案 0 :(得分:7)
我尝试了以下操作,但它不起作用:
string s1=(char) 97;
那是因为std::string
constructor没有任何需要一个char
的重载。而且,复制被省略,因此直接调用构造函数,operator =()
永远不会被调用(在复制省略上记录自己)。
转换仅在我按照以下方式拆分作业时才有效:
string s1; s1=(char) 97;
现在副本不再被删除,您实际上正在调用std::string::operator =()
过载接受单char
。