不存在从"std::string"到"char"的合适转换
no suitable conversion from "std::string" to "char" exists
我正在为学校做一个项目,遇到了一些问题(标题中有错误)。
下面是遇到错误的代码行:
kruskalS[n].nodeList[m].push_back(tempFirstCity);
kruskalS
是一个结构体,nodeList
是结构体中 string
类型的向量,我正在尝试将tempFirstCity
(也是string
)插入该数组。
我很容易犯一个基本错误,因为我自四月以来就没有做过任何编程。任何形式的帮助将不胜感激,如果需要,我愿意从该计划中发布更多信息。
std::string
(有点)是 char
s 的容器。 push_back
函数用于将一个元素添加到容器的末尾。 所以当你调用kruskalS[n].nodeList[m].push_back(tempFirstCity);
时,你说你正在尝试在string
的末尾添加一个元素,称为kruskalS[n].nodeList[m]
。 因此,编译器期望一个元素是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
字符串替换任何已有的内容,您可以这样做
kruskalS[n].nodeList[m] = tempFirstCity;
您可以使用:
std::string::c_str()
它返回一个const char *
。
你说nodeList是一个字符串类型的数组。 std::string nodeList[x]
其中 x 是一个常量。
然后将一个新元素分配给该数组,其中 m
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);
在C++中,您可以使用string::c_str()
将字符串转换为 C 编程char
数组。
- 将无符号char*转换为std::istream*C++
- 为什么这个函数将"const char*"转换为"void* const"而不是"const void*"
- 使用char类型将decimal转换为string,将string转换为decimal
- 如何在对<char>C++程序进行逆向工程的同时将 std::basic_string 转换为 Rust 可读值?
- 将函数参数"const char*"转换为"std::string_view"是
- 如何在保持其值的同时将 c++ 无符号字符变量转换为 char 变量
- 需要帮助在 c++ 中将字符串转换为字符 ----错误 "const char *" 类型的值不能用于初始化 "char" 类型的实体
- 如何在不强制转换每个参数的情况下删除初始值设定项列表中从 int 到 char 的缩小转换?
- C ++如何在使用"tolower"时将char转换为int
- 有没有办法在C++的赋值中将"char**"转换为"double"?
- 如何使用多次 memcpy 转换回 std::vector<unsigned char>?
- 将"uint8_t"(从套接字读取)隐式转换为"char"安全吗
- JavaCPP 错误:无法将参数"1"的"char*"转换为"Abc*
- 将传入的网络"char*"数据转换为"uint8_t"并返回的安全方法是什么?
- 转换char*时的值不同
- Boost Python 不会自动转换 char* 数据成员
- 除了转换char*之外,还有更好的方法来获得一个变量值吗?
- 如何跨平台转换char*到long long(64位)
- 用atof转换char数组中的浮点数
- C转换char[]为时间戳;