将向量<char>作为参数,然后转换为字符串

Taking a vector<char> as a parameter and then converting to string

本文关键字:参数 转换 字符串 然后 gt 向量 lt char      更新时间:2023-10-16
void conversionToString(vector<char>& x) {
    string s(x.begin(), x.end());
    cout << s;
}
int main() {
    vector<char> test('a', 'b', 'c');
    conversionToString(test);
    return 0;
}

我正在尝试将一个字符串转换为一个char向量。在这个示例中,我只是在做一个简单的测试,但在我的实际项目中,我计划接受用户输入,并从向量(也是字符串(来回转换。使用在线编译,我得到错误消息:

main.cpp:在函数"int main(("中:main.cpp:1:36:error:调用"std::vector::vector(char,char,char("时没有匹配的函数矢量测试('a','b','c'(;

我希望得到一些建议,不仅是关于修复这个方法,而且关于这个方法的功能。

您的矢量初始化错误。你需要

vector<char> test{'a', 'b', 'c'};

关于该方法的功能,我认为转换没有多大意义。您可以打印矢量的元素:

for (auto c : test)
{
  std::cout << c;
}

向量的初始值设定项应该如下所示(仅限C++11(:

vector<char> test{'a', 'b', 'c'};

一般来说,如果你应该将"从向量来回转换为字符串",这是值得怀疑的——你为什么要这样做?

如果使用C++11,可以使用带有vector<char>:的初始值设定项列表

vector<char> test{'a', 'b', 'c'};

如果你不使用C++11,你将不得不以缓慢的方式进行:

vector<char> test;
test.push_back('a');
test.push_back('b');
test.push_back('c');

您正在获取函数中已经存在的字符向量。请重新表述你的问题。如果您想获取一个std::字符串并返回std::vector,这里有一个函数可以实现这一点:

std::vector<char> StringToChar(std::string str)
{
    std::vector<char> charVector;
    for (int i = 0; i < str.size(); ++i)
    {
        charVector.push_back(str.at(i));
    }
    return charVector;
}