没有从 'value_type'(又名 'char')到 'string'(又名 'basic_string<char, char_traits<char>, allocator<char> >')的可行转换

Lin*_*oln 7 c++ string type-conversion char

string convert(string name)
{
  string code = name[0];
  ...
}
Run Code Online (Sandbox Code Playgroud)

我从这一行中得到“没有从 'value_type'(又名 'char')到 'string'(又名 'basic_string, allocator >')的可行转换”。

如果我将其更改为:

string convert(string name)
{
  string code;
  code = name[0];
  ...
}
Run Code Online (Sandbox Code Playgroud)

然后它起作用了。谁能解释为什么?

Vla*_*cow 6

类 std::string(相应的 std::basic_string)具有赋值运算符

basic_string& operator=(charT c);
Run Code Online (Sandbox Code Playgroud)

并且此赋值运算符在此代码片段中使用

string convert(string name)
{
  string code;
  code = name[0]; // using of the assignment operator
  ...
}
Run Code Online (Sandbox Code Playgroud)

但是,该类没有您可以编写的适当构造函数

string code = name[0];
Run Code Online (Sandbox Code Playgroud)

你可以这样写

string code( 1, name[0] );
Run Code Online (Sandbox Code Playgroud)

使用构造函数

basic_string(size_type n, charT c, const Allocator& a = Allocator());
Run Code Online (Sandbox Code Playgroud)