Reputation: 195
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
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