我有一个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;
}
答案 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;
当然我现在只是立即打印它们来测试以确保它正确分配,我现在可以继续实际编码我实际上想要它如何操纵名称。
感谢您的帮助!