我正在为学校做一个项目,我遇到了一些问题(错误在标题中)。
以下是遇到错误的代码行:
kruskalS[n].nodeList[m].push_back(tempFirstCity);
kruskalS
是一个结构,nodeList
是结构中string
类型的向量,我正在尝试插入tempFirstCity
(也是string
进入那个数组。
我很容易犯一个基本的错误,因为我从四月开始没有做任何编程。任何形式的帮助都将受到赞赏,如果需要,我愿意从该计划中发布更多信息。
答案 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
数组..