Lincoln
Lincoln

Reputation: 195

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?

Upvotes: 8

Views: 26431

Answers (1)

Vlad from Moscow
Vlad from Moscow

Reputation: 310950

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());

Upvotes: 9

Related Questions