我无法使用std::wcout
。据我所知,wide stream
对象对应于C宽的流(ISO C 7.19.2/5
)。我们什么时候才真正需要在实践中使用它。我非常确定它不适合从实现wide character set
N3797::3.9.1/5 [basic.fundamental]
输出字符,因为
#include <iostream>
#include <locale>
int main()
{
std::locale loc = std::locale ("en_US.UTF-8");
std::wcout.imbue(loc);
std::cout << "ي" << std::endl; // OK!
std::wcout << "ي" << std::endl; // Empty string
std::wcout << "L specifier = " << L"ي" << std::endl; // J
std::wcout << "u specifier = " << u"ي" << std::endl; // 0x400,eac
std::wcout << "u8 specifier = " << u8"ي" << std::endl; // empty string
}
我们可以看到wcout
&#39; operator<<
没有正确打印这些字符,同时cout
&#39; s operator<<
执行此操作好。我还对任何其他类似的人提起过wcout
'л', 'ਚੰ', 'ਗਾ', 'კ', 'ა', 'რ', 'გ', 'ი'
等等,但它只能打印一个Latinic字符或数字。