Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

I get "no viable conversion from 'value_type' (aka 'char') to 'string' (aka 'basic_string, allocator >')" from this line.

If I change it to:

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

Then it works. Can anyone explain why?

like image 819
Lincoln Avatar asked May 15 '15 10:05

Lincoln


1 Answers

Class std::string (correspondingly std::basic_string) has assignment operator

basic_string& operator=(charT c);

and this assignment operator is used in this code snippet

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

However the class does not has an appropriate constructor that you could write

string code = name[0];

You can write like

string code( 1, name[0] );

using constructor

basic_string(size_type n, charT c, const Allocator& a = Allocator());
like image 178
Vlad from Moscow Avatar answered Oct 14 '22 14:10

Vlad from Moscow