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

时间:2014-04-10 22:32:27

标签: c++ string vector char

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:11:36:错误:没有匹配函数来调用'std :: vector :: vector(char,char,char)'      矢量测试(&#39; a&#39;,&#39; b&#39;&#39; c&#39;);

我希望得到一些建议,不仅要修复这种方法,还要考虑方法的功能。

4 个答案:

答案 0 :(得分:1)

向量的初始化器应该如下所示(仅限C ++ 11):

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

一般来说,你是否应该从一个矢量来回转换&#34;是一个字符串&#34; - 你为什么要这样做?

答案 1 :(得分:1)

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

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

关于该方法的功能,我在转换中看不到多少意义。您可以打印矢量元素:

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

答案 2 :(得分:0)

如果你正在使用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');

答案 3 :(得分:-1)

您正在使用函数中已有的字符向量。请改写你的问题。如果你想获取一个std :: string并返回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;
}