3
我需要反轉wstring。我有這樣的代碼:C++中的反向wstring
#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 "papa" | ./reverse
112 97 112 97
papa
apap
但是,當我進入西里爾文字,被編碼超過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