我试图从用户那里获取一个字符串输入,将它分成每个空格的单个字符串并将其存储在一个向量中。我使用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;
}
答案 0 :(得分:1)
更改此
split(input, " ", splitInput);
到这个
split(input, ' ', splitInput);
因为该函数的原型是:
vector<string> &split(string &s, char delim, vector<string> &elems) ;
,它请求char
作为第二个参数,而不是字符串。
" "
是一个字符串文字,其类型为const char[2]
,而' '
是一个字符,其类型为char
。