没有从“value_type"(又名“char")到“string"(又名“basic_string<char, char_traits<char>, allocator<char>&gt;')的可行转换 [英] no viable conversion from &#39;value_type&#39; (aka &#39;char&#39;) to &#39;string&#39; (aka &#39;basic_string&lt;char, char_traits&lt;char&gt;, allocator&lt;char&gt; &gt;&#39;)

查看:22
本文介绍了没有从“value_type"(又名“char")到“string"(又名“basic_string<char, char_traits<char>, allocator<char>&gt;')的可行转换的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

我从这一行得到从'value_type'(又名'char')到'string'(又名'basic_string,分配器>')没有可行的转换".

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

如果我将其更改为:

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

然后就可以了.谁能解释一下为什么?

Then it works. Can anyone explain why?

推荐答案

类std::string(对应std::basic_string)有赋值运算符

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

你可以这样写

string code( 1, name[0] );

使用构造函数

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

这篇关于没有从“value_type"(又名“char")到“string"(又名“basic_string<char, char_traits<char>, allocator<char>&gt;')的可行转换的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆