无法将'value_type' (即'char') 转换为'string' (即'basic_string<char, char_traits<char>, allocator<char> >')。

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

我从这行代码中得到了“无法将'value_type'(也称为'char')转换为'string'(即'basic_string,allocator >')”的错误提示。

如果我将其更改为:

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

然后它就可以工作了。 有人能解释一下吗?
1个回答

9

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

basic_string& operator=(charT c);

这个赋值运算符在这段代码片段中被使用了

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

然而,该类没有适当的构造函数供您编写。
string code = name[0];

你可以像这样编写:

string code( 1, name[0] );

使用构造函数

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

std::string code = { 1, name[0] }; 将构造一个长度为2的字符串,第一个字符为 '\1' - Evg
@Evg 你是对的。我已经删除了这行代码。 - Vlad from Moscow

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接