没有从“std :: string”到“char”的适当转换

时间:2012-12-01 04:56:35

标签: c++

我正在为学校做一个项目,我遇到了一些问题(错误在标题中)。

以下是遇到错误的代码行:

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

kruskalS是一个结构,nodeList是结构中string类型的向量,我正在尝试插入tempFirstCity(也是string进入那个数组。

我很容易犯一个基本的错误,因为我从四月开始没有做任何编程。任何形式的帮助都将受到赞赏,如果需要,我愿意从该计划中发布更多信息。

4 个答案:

答案 0 :(得分:6)

std::string是{种类} char的容器。 push_back函数用于将一个元素添加到容器的末尾。因此,当您致电kruskalS[n].nodeList[m].push_back(tempFirstCity);时,您说您正在尝试将一个元素添加到名为string的{​​{1}}的末尾。所以编译器期望一个元素是kruskalS[n].nodeList[m]

如果您知道char不为空,并且您希望将tempFirstCity中的第一个char添加到tempFirstCity的末尾(包括您知道的情况{ {1}}),你可以做到

kruskalS[n].nodeList[m]

如果要在任何当前内容之后添加整个字符串,可以执行

tempFirstCity.size() == 1

如果您希望没有当前内容和/或您只想用kruskalS[n].nodeList[m].push_back(tempFirstCity[0]); 字符串替换那里的任何内容,您可以

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

答案 1 :(得分:4)

您可以使用:

std::string::c_str()

返回const char *

答案 2 :(得分:1)

你说nodeList是一个字符串类型的数组。即std::string nodeList[x]其中x是常数。

然后为该数组分配一个新元素,其中m< x如下:

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

<小时/> 根据评论:

要附加到矢量的末尾,您不需要索引m:

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

在索引m处插入:

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

答案 3 :(得分:-1)

在C ++中,您可以使用string::c_str()将字符串转换为C编程char数组..