簡體   English   中英

不存在從“ std :: string”到“ char”的適當轉換

[英]no suitable conversion from “std::string” to “char” exists

我正在為一個學校項目工作,但遇到了一個問題(標題中有錯誤)。

這是發生錯誤的代碼行:

kruskalS[n].nodeList[m].push_back(tempFirstCity);

kruskalS是一個結構,而nodeList是該結構中string類型的向量,我正嘗試將tempFirstCity (也是string )插入該數組中。

自從4月以來我沒有進行任何編程,所以我很容易犯一個基本的錯誤。 任何幫助將不勝感激,如果需要,我願意從程序中發布更多信息。

std::stringchar容器(的一種)。 push_back函數用於將一個元素添加到容器的末尾。 因此,當您調用kruskalS[n].nodeList[m].push_back(tempFirstCity); ,則表示您要嘗試在名為kruskalS[n].nodeList[m]string的末尾添加一個元素。 因此,編譯器期望一個元素為char

如果您知道tempFirstCity不為空,並且想要將tempFirstCity的第一個char添加到kruskalS[n].nodeList[m]的末尾(包括您知道tempFirstCity.size() == 1 ),則可以做

kruskalS[n].nodeList[m].push_back(tempFirstCity[0]);

如果要在任何當前內容之后添加整個字符串,則可以執行

kruskalS[n].nodeList[m] += tempFirstCity;

如果您預期沒有當前內容和/或只想用tempFirstCity字符串替換已經存在的tempFirstCity ,則可以

kruskalS[n].nodeList[m] = tempFirstCity;

您可以使用:

std::string::c_str()

它返回一個const char *

您說nodeList是一個字符串類型的數組。 std::string nodeList[x]其中x是一個常數。

然后為該數組分配一個新元素,其中m <x如下:

kruskalS[n].nodeList[m] = tempFirstCity;


根據評論:

對於追加到向量的末尾,您不需要索引m:

vector<string>::iterator itr = nodeList.begin();
for (int i = 0; i < m; i++)
  itr++;
nodeList.insert(itr, tempFirstCity);

對於在索引m處插入:

 vector<string>::iterator itr = nodeList.begin(); for (int i = 0; i < m; i++) itr++; nodeList.insert(itr, tempFirstCity); 

在C ++中,可以使用string::c_str()將字符串轉換為C編程char數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM