#include <iostream>
#include <string>
#include <vector>
#include <sstream>
#include <algorithm>
typedef std::vector<std::wstring> WSV;
typedef std::vector<std::vector<std::wstring::value_type>> WSS;
WSS MakeHoge(std::wstring W) {
std::size_t N = 0;
for (auto&o : W) {
if (o == L' ')o = L'\n';
}
std::wstringstream wss(W);
std::wstring WS;
WSV SV;
while (std::getline(wss, WS)) {
SV.push_back(WS);
}
std::size_t L = 0;
for (auto& o : SV) L = std::max(L, o.size());
WSS SS(L);
for (auto& o : SS) {
o.resize(SV.size(),L' ');
}
for (std::size_t i = 0; i < SV.size(); i++) {
for (std::size_t j = 0; j < SV[i].size(); j++) {
SS[j][SV.size() - i - 1] = SV[i][j];
}
}
return SS;
}
bool Show(const WSS& W) {
std::wcout.imbue(std::locale("Japanese"));
for (auto&oo : W) {
for (auto&o : oo) {
std::wcout << o;
}
std::wcout << std::endl;
}
std::wcout<<std::endl;
std::wcout<<std::endl;
std::wcout<<L"わんわんお"<<std::endl;
return true;
}
int main() {
std::wstring ws = L"謹賀新年 謹んで初春の お慶びを 申し上げます";
WSS WS;
WS = MakeHoge(ws);
Show(WS);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3N0cmVhbT4KI2luY2x1ZGUgPGFsZ29yaXRobT4KCnR5cGVkZWYgc3RkOjp2ZWN0b3I8c3RkOjp3c3RyaW5nPiBXU1Y7CnR5cGVkZWYgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8c3RkOjp3c3RyaW5nOjp2YWx1ZV90eXBlPj4gV1NTOwoKCgpXU1MgTWFrZUhvZ2Uoc3RkOjp3c3RyaW5nIFcpIHsKCXN0ZDo6c2l6ZV90IE4gPSAwOwoKCWZvciAoYXV0byZvIDogVykgewoJCWlmIChvID09IEwn44CAJylvID0gTCdcbic7Cgl9CgoJc3RkOjp3c3RyaW5nc3RyZWFtIHdzcyhXKTsKCXN0ZDo6d3N0cmluZyBXUzsKCVdTViBTVjsKCXdoaWxlIChzdGQ6OmdldGxpbmUod3NzLCBXUykpIHsKCQlTVi5wdXNoX2JhY2soV1MpOwoJfQoKCXN0ZDo6c2l6ZV90IEwgPSAwOwoKCWZvciAoYXV0byYgbyA6IFNWKSBMID0gc3RkOjptYXgoTCwgby5zaXplKCkpOwoJV1NTIFNTKEwpOwoJZm9yIChhdXRvJiBvIDogU1MpIHsKCQlvLnJlc2l6ZShTVi5zaXplKCksTCcgJyk7Cgl9CgoJZm9yIChzdGQ6OnNpemVfdCBpID0gMDsgaSA8IFNWLnNpemUoKTsgaSsrKSB7CgkJZm9yIChzdGQ6OnNpemVfdCBqID0gMDsgaiA8IFNWW2ldLnNpemUoKTsgaisrKSB7CgkJCgkJCVNTW2pdW1NWLnNpemUoKSAtIGkgLSAxXSA9IFNWW2ldW2pdOwoKCQl9Cgl9CgoJcmV0dXJuIFNTOwoKfQoKYm9vbCBTaG93KGNvbnN0IFdTUyYgVykgewoJc3RkOjp3Y291dC5pbWJ1ZShzdGQ6OmxvY2FsZSgiSmFwYW5lc2UiKSk7Cglmb3IgKGF1dG8mb28gOiBXKSB7CgkJZm9yIChhdXRvJm8gOiBvbykgewoJCQlzdGQ6Ondjb3V0IDw8IG87CgkJfQoJCXN0ZDo6d2NvdXQgPDwgc3RkOjplbmRsOwoJfQoJc3RkOjp3Y291dDw8c3RkOjplbmRsOwoJc3RkOjp3Y291dDw8c3RkOjplbmRsOwoJc3RkOjp3Y291dDw8TCLjgo/jgpPjgo/jgpPjgYoiPDxzdGQ6OmVuZGw7CglyZXR1cm4gdHJ1ZTsKfQoKaW50IG1haW4oKSB7CglzdGQ6OndzdHJpbmcgd3MgPSBMIuisueizgOaWsOW5tOOAgOisueOCk+OBp+WIneaYpeOBruOAgOOBiuaFtuOBs+OCkuOAgOeUs+OBl+S4iuOBkuOBvuOBmSI7CglXU1MgV1M7CglXUyA9IE1ha2VIb2dlKHdzKTsKCVNob3coV1MpOwoKCglyZXR1cm4gMDsKfQ==