将字符串拆分为字符串向量

时间:2015-09-20 20:35:55

标签: c++

我试图从用户那里获取一个字符串输入,将它分成每个空格的单个字符串并将其存储在一个向量中。我使用this帖子中的第一个代码段(它是问题的第二个答案)来对字符串进行拆分。这些是我在编译时得到的错误:

stringTest.cpp:在函数'int main()'中: stringTest.cpp:23:30:错误:从'const char *'到'char'的无效转换[-fpermissive]   split(输入,"",splitInput);                               ^

stringTest.cpp:8:17:错误:初始化'std :: vector>&的参数2 split(std :: string&,char,std :: vector>&)'[-fpermissive]  vector& split(string& s,char delim,vector& elems){

我意识到第一个错误在说什么,但无法弄清楚导致问题的原因,我不知道第二个错误意味着什么。

这是我编写的代码(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;
}

1 个答案:

答案 0 :(得分:1)

更改此

split(input, " ", splitInput);

到这个

split(input, ' ', splitInput);

因为该函数的原型是:

vector<string> &split(string &s, char delim, vector<string> &elems) ;,它请求char作为第二个参数,而不是字符串。

" "是一个字符串文字,其类型为const char[2],而' '是一个字符,其类型为char

您还可以查看此问题:What is the type of string literals in C and C++?