我知道在C++11中,
请考虑:
如果我将此字符串打印出来,而我的终端编码设置为UTF-8,则会看到字符
我知道可以使用像iconv这样的库来完成此操作,但我想知道是否可以仅使用C++标准库来完成。我提出这个问题并不是因为我不想使用iconv,而是因为我不太理解C++中语言环境的工作原理。
std::codecvt<char16_t, char>
用于UTF-16和UTF-8之间的转换,而std::codecvt<char32_t, char>
则用于UTF-32和UTF-8之间的转换。那么,能否将UTF-8和ISO 8859-1之间进行转换呢?请考虑:
const char* s = "\u00C0";
如果我将此字符串打印出来,而我的终端编码设置为UTF-8,则会看到字符
À
。然而,如果我将我的终端编码设置为ISO 8859-1,则打印该字符串将无法打印出所需的字符。如果我的终端编码设置为ISO 8859-1,我应该如何将s
转换为字符串,以便在打印时显示字符À
?我知道可以使用像iconv这样的库来完成此操作,但我想知道是否可以仅使用C++标准库来完成。我提出这个问题并不是因为我不想使用iconv,而是因为我不太理解C++中语言环境的工作原理。
iconv
。 - Kerrek SBmbrtoc32
将系统的窄编码转换为UTF-32。(你可能会想知道<cuchar>
头文件在哪里...) - Kerrek SB