没有可行的从'value_type'(又名'char')到'string'的转换(又名'basic_string <char,char_traits <char =“”>,allocator <char>&gt;')

时间:2015-05-15 10:43:54

标签: c++ string type-conversion

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

我从这行开始“没有从'value_type'(又名'char')转换为'string'(又名'basic_string,allocator&gt;')”。

如果我将其更改为:

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

然后它有效。 任何人都可以解释原因吗?

1 个答案:

答案 0 :(得分:2)

类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] };

或喜欢

string code( 1, name[0] );

使用构造函数

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