#include <iostream>
#include <sstream>
#include <vector>
#include <string>
vector<wstring> GetStr (const wstring &s)
{
locale china ("chs");
wistringstream line (s);
wstring word;
vector<wstring> words;
while (line >> word) {
words.push_back (word);
}
return move (words);
}
vector<wstring> TurnStrVec (const vector<wstring> &vec)
{
auto vec_mid_it =
vec.cbegin() + (vec.size () / 2);
vector<wstring> tmp_vec (vec_mid_it
, vec.cend());
tmp_vec.insert (tmp_vec.cend()
, vec.cbegin ()
, vec_mid_it);
return move (tmp_vec);
}
wstring VecToStr (const vector<wstring> &vec)
{
wstring tmp_s;
for (const auto &elem : vec) {
tmp_s.append (elem);
//tmp_s.append (L" ");
}
return move (tmp_s);
}
void TurnStr (wstring &s)
{
s = VecToStr (TurnStrVec(GetStr(s)));
}
int main ()
{
ios::sync_with_stdio(flase);
locale china ("chs");
wcout.imbue (china);
wstring s (L"你 好 啊, 朋 友!");
TurnStr (s);
wcout << s << endl;
return 0;
}