如何将单个矢量转换为多个字符串?

时间:2014-09-12 02:39:09

标签: c++ string vector

我有一个C ++代码,它接受多个字符串,将它们全部添加到一个向量中,然后按字母顺序对它们进行排序,但是我需要它然后将该向量拆分并将其值分配回单个字符串。我怎样才能做到这一点?我已经搜遍了为多个字符串分配一个向量,但只发现从字符串到向量。

我有矢量"名称"我想将它分配给多个字符串,这些字符串对应于名称与矢量"名称"的顺序相对应,例如:

输入:

" John Dave Peter Charlie Michael"

代码将它们分开并按字母顺序排序,但现在我想将它们分配回字符串" str1"," str2"," str3" ," str4"等等,每个带有向量的名称(向量永远不会超过20个名称,所以现在我只是单独定义每个字符串)。

最后我希望能够添加

cout << str1 << endl
cout << str2 << endl

等。得到输出:

查理

戴夫

约翰

迈克尔

彼得

(我会在显示它们之前进一步操作这些名称,这样只需立即显示整个矢量就不会有任何好处)。非常感谢!

---- ----编辑

评论不会让我回来,如果现在我输入:

cout << names[0] << endl

我出去了:

查理

查理

查理

查理

查理

---- ----编辑

当前代码:

    vector<string> separate_string(const string& input)
{
    istringstream input_stream(input);
    string buffer;
    vector<string> separated;
    while (input_stream >> buffer)
    {
        separated.push_back(buffer);
    }

    return separated;
}

int main()
{
    string test_string;
    getline(cin, test_string);
    auto names = separate_string(test_string);
    //sort(begin(names), end(names));
    //for (const auto& s : names)
        //string temp1;
    cout << names[0] << endl;

}

2 个答案:

答案 0 :(得分:0)

你想要的是容纳它们的容器:

vector<string> my_strings {"John", "Dave", "Peter", "Charlie", "Michael"};

然后排序

std::sort(my_strings.begin(), my_strings.end());

然后打印到stdout:

std::copy(my_strings.begin(), my_strings.end(), std::ostream_iterator<string>(std::cout, "\n"));

答案 1 :(得分:0)

确定,

我道歉,我觉得我对我真正想要的东西很困惑,我想出怎么做,我只是不知道索引矢量的能力(是的,我是一个完整的菜鸟)。

我最终解决了它,但只是用索引定义每个字符串:

string test_string;
    getline(cin, test_string);
    auto names = separate_string(test_string);
    //sort(begin(names), end(names));
    //for (const auto& s : names)
    string temp1 = names[0];
        cout << temp1 << endl;
    string temp2 = names[1];
        cout << temp2 << endl;
    string temp3 = names[2];
        cout << temp3 << endl;
    string temp4 = names[3];
        cout << temp4 << endl;

当然我现在只是立即打印它们来测试以确保它正确分配,我现在可以继续实际编码我实际上想要它如何操纵名称。

感谢您的帮助!