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