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

no viable conversion from 'value_type' (aka 'char') to 'string' (aka 'basic_string<char, char_traits<char>, allocator<char> >')

string convert(string name)
{
  string code = name[0];
  ...
}

我从这一行得到 "no viable conversion from 'value_type' (aka 'char') to 'string' (aka 'basic_string, allocator >')"。

如果我把它改成:

string convert(string name)
{
  string code;
  code = name[0];
  ...
}

然后就可以了。 谁能解释一下为什么?

Classstd::string(对应std::basic_string)有赋值运算符

basic_string& operator=(charT c);

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

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

但是 class 没有您可以编写的合适的构造函数

string code = name[0];

你可以这样写

string code( 1, name[0] );

使用构造函数

basic_string(size_type n, charT c, const Allocator& a = Allocator());