簡體   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