将字符串分割为字符串向量时出现无效转换错误
Invalid conversion error when splitting string into a string vector
我试图从用户获取字符串输入,在每个空白处将其拆分为单个字符串并将其存储在向量中。我使用这篇文章的第一个代码片段(这是问题的第二个答案)来对字符串进行拆分。这些是我在编译时得到的错误:
stringTest.cpp: In function ' int main() ':stringTest.cpp:23:30:错误:从' const char* '到' char '的无效转换[-fpermissive]split(input, " ", splitInput);^
stringTest.cpp:8:17:错误:初始化std::vector>&的实参2;Split (std::string&, char, std::vector>&) ' [-fpermissive]Vector &split(string &s, char delim, Vector & elements) {
我知道第一个错误在说什么,但不知道是什么导致了这个问题,我不知道第二个错误是什么意思。
这是我写的代码(main之外的所有内容都取自链接帖子):
#include <string>
#include <sstream>
#include <vector>
#include <iostream>
using namespace std;
vector<string> &split(string &s, char delim, vector<string> &elems) {
stringstream ss(s);
string item;
while (getline(ss, item, delim)) {
elems.push_back(item);
}
return elems;
}
int main(){
string input;
cin>>input;
vector<string> splitInput;
split(input, " ", splitInput);
for(int i = 0; i < splitInput.size(); i++){
cout<< splitInput.at(i) << endl;
}
return 0;
}
修改
split(input, " ", splitInput);
split(input, ' ', splitInput);
,因为函数原型是:
vector<string> &split(string &s, char delim, vector<string> &elems) ;
,请求char
作为第二个参数,而不是字符串。
" "
是类型为const char[2]
的字符串字面值,而' '
是类型为char
的字符。
你也可以检查这个问题:C和c++中的字符串字面值是什么类型?
相关文章:
- 如果用户输入无效,如何使用字符串变量-C++重复输入命令
- 获取无效的字符串大小
- 为什么此字符串在传递到stoi时被视为无效参数
- 如何定义此"if block"中其他无效输入的值,以便在c ++中将字符串转换为对象?
- 在 C++ 中传递字符串时指针无效
- ld:无效的字符串偏移量...对于".strtab"部分
- C++字符串_Xout_of_range("无效的字符串位置");
- 正在使用C 三元运算符中的字符串常数,一种无效的非效率数组的使用
- 如何避免字符串到整数转换情况下的无效参数异常
- Rapidjson 解析错误:字符串 (207) 中的编码无效
- 将词法强制转换双倍提升为字符串,给出无效结果
- C++17 std::basic_string_view 会使 C 字符串的使用无效吗?
- 用户输入逻辑运算符符号或数字,如果输入字符或字符串则无效
- 如何将无效操作数修复为带有字符串的二进制表达式?
- free():添加字符串时指针无效
- 替换字符串C++中无效的XML unicode序列
- "无法封送'返回值':无效的托管/非托管类型组合",同时使用字符串数组封送委托
- 从"char"到"const char*"的转换无效 [-fpermissive] str::atoi (字符串到整数)
- 0x800401f3 COMInterop Dll的类字符串无效
- 从矢量复制字符串无效