将字符串分割为字符串向量时出现无效转换错误

Invalid conversion error when splitting string into a string vector

本文关键字:字符串 无效 错误 转换 分割 向量      更新时间:2023-10-16

我试图从用户获取字符串输入,在每个空白处将其拆分为单个字符串并将其存储在向量中。我使用这篇文章的第一个代码片段(这是问题的第二个答案)来对字符串进行拆分。这些是我在编译时得到的错误:

stringTest.cpp: In function ' int main() ':stringTest.cpp:23:30:错误:从' const char* '到' char '的无效转换[-fpermissive]split(input, " ", splitInput);^

stringTest.cpp:8:17:错误:初始化std::vector>&amp的实参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++中的字符串字面值是什么类型?