繁体   English   中英

没有从“value_type”(又名“char”)到“string”(又名“basic_string”)的可行转换<char, char_traits<char> , 分配器<char> &gt;&#39;)

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

我从这一行中得到“没有从 'value_type'(又名 'char')到 'string'(又名 'basic_string, allocator >')的可行转换”。

如果我将其更改为:

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

然后它起作用了。 谁能解释为什么?

类 std::string(相应的 std::basic_string)具有赋值运算符

basic_string& operator=(charT c);

并且此赋值运算符在此代码片段中使用

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

但是,该类没有您可以编写的适当构造函数

string code = name[0];

你可以这样写

string code( 1, name[0] );

使用构造函数

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 错误:使用不同类型重新定义“var”:“char”与“string”(又名“basic_string”) <char, char_traits<char> , 分配器<char> &gt;&#39;) ostream和运算符std :: basic_string <char, std::char_traits<char> ,std :: allocator <char> &gt;? 1 IntelliSense:没有合适的构造函数可以从“bool”转换为“std :: basic_string” <char, std::char_traits<char> ,std :: allocator <char> &gt;” “ str2Int(std :: basic_string <char, std::char_traits<char> ,std :: allocator <char> &gt; const&)”,引用自: 从&#39;void&#39;转换为非标量类型&#39;std :: pair <std::basic_string<char, std::char_traits<char> 错误:来自 &#39;__gnu_cxx::__alloc_traits 的无效转换<std::allocator<char> , char&gt;::value_type&#39; {aka &#39;char&#39;} 到 &#39;const char*&#39; [-fpermissive] 二进制表达式的无效操作数('basic_ostream <char, std::char_traits<char> &gt;' 和 '向量<std::string> '(又名'向量<basic_string<char> &gt;')) </basic_string<char></std::string></char,> main.cpp || 未定义对`MyClass :: loadDatas(std :: basic_string的引用 <char, std::char_traits<char> ,std :: allocator <char> &gt;)&#39;| 未定义对`librarymanager :: getBook(std :: basic_string的引用 <char, std::char_traits<char> ,std :: allocator <char> &gt;) 未定义对`readVector(std :: __ cxx11 :: basic_string的引用) <char, std::char_traits<char> ,std :: allocator <char> &gt;)”
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM