#include <iostream>
using namespace std;
int main() {
std::wstring str = L"\u00A2";
std::wcout << str;
return 0;
}
这不行吗?怎么解决这个问题?
答案 0 :(得分:3)
它不起作用,因为在默认的C语言环境中,没有与U + 00A2对应的字符。
如果您正在使用标准的ubuntu安装,那么您的用户区域设置很可能使用比US-ASCII更大的字符集,很可能是使用UTF-8编码的Unicode。所以你只需要切换到环境中指定的语言环境,如下所示:
#include <iostream>
/* locale is needed for std::setlocale */
#include <locale>
#include <string>
int main() {
/* The following switches to the locale specified
* by the LC_ALL environment variable.
*/
std::setlocale (LC_ALL, "");
std::wstring str = L"\u00A2";
std::wcout << str;
return 0;
}
如果您使用std::string
代替std::wstring
和std::cout
代替std::wcout
,那么您就不需要setlocale
因为没有翻译需要(如果控制台需要UTF-8)。