[英]No suitable conversion function from std string to const char * exists
[英]no suitable conversion from “std::string” to “char” exists
我正在為一個學校項目工作,但遇到了一個問題(標題中有錯誤)。
這是發生錯誤的代碼行:
kruskalS[n].nodeList[m].push_back(tempFirstCity);
kruskalS
是一個結構,而nodeList
是該結構中string
類型的向量,我正嘗試將tempFirstCity
(也是string
)插入該數組中。
自從4月以來我沒有進行任何編程,所以我很容易犯一個基本的錯誤。 任何幫助將不勝感激,如果需要,我願意從程序中發布更多信息。
std::string
是char
容器(的一種)。 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.