c++ - 将字符串拆分为字符串 vector 时出现无效转换错误

标签 c++

我正在尝试从用户那里获取一个字符串输入,在每个空白处将其拆分为单独的字符串,并将其存储在一个 vector 中。我正在使用 this 中的第一个代码片段发布(这是问题的第二个答案)对字符串进行拆分。这些是我在编译时遇到的错误:

stringTest.cpp:在函数“int main()”中: stringTest.cpp:23:30: 错误:从‘const char*’到‘char’的无效转换[-fpermissive] 分割(输入,“”,分割输入); ^

stringTest.cpp:8:17: 错误:正在初始化“std::vector >& split(std::string&, char, std::vector >&)”的参数 2 [-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;
}

最佳答案

改变这个

split(input, " ", splitInput);

对此

split(input, ' ', splitInput);

因为函数的原型(prototype)是:

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++?

关于c++ - 将字符串拆分为字符串 vector 时出现无效转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32684046/

相关文章:

c++ - 用户输入数组程序一直返回255

c++ - 如何在没有备忘录的情况下使用内存来执行此递归代码?

C++函数类型模板参数推导规则

c++ - QT 编辑器智能按钮

c++ - 如何使用 C++ 创建 BMP 文件?

c++ - ISO C++ 禁止声明没有类型的 'Stack"

c++ - 如何从文本文件中读取数值直到遇到 char 类型?

C++ 函数调用后无关指针发生变化

c++ - 类的二维 vector 在访问函数时出错

c++ - 如何在没有尾随字节\x00 的情况下发送不同长度的消息?