wstringを逆にする必要があります。私は以上の1つのバイトをコード化しているキリル文字のテキストを入力するとき、私は、C++の逆wstring
echo -n "papa" | ./reverse
112 97 112 97
papa
apap
しかし:
#include <iostream>
#include <string>
#include <locale>
int main() {
std::wstring s;
std::getline(std::wcin, s);
for (const auto &i : s) {
std::wcout << (int) i << " ";
}
std::wcout << std::endl;
std::wcout << s << std::endl;
std::reverse(s.begin(), s.end());
std::wcout << s << std::endl;
return 0;
}
ANSI文字が1バイトでエンコードされている、と私は簡単にそれらを逆にすることができます:私はそのようなコードを持っていますそのような出力を得るには:
echo -n "папа" | ./reverse
208 191 208 176 208 191 208 176
папа
�пап�
どのようにしてその文字列を正しく逆転できますか?
P.S.私はOS Xを使用しています。
エンコードがutf-8の場合、なぜワイド文字タイプを使用しますか? – user2079303
@ user2079303 'std :: string'を使用すると出力が得られます:' -48 -65 -48 -80 -48 -65 -48 -80 папа пап ' – 0x1337
はい、私はあなたのことを暗示しませんでした問題、ちょうど混乱。 – user2079303