Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.2k views
in Technique[技术] by (71.8m points)

c++ - 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?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...