我们在哪里真的需要使用宽字符流侦察?

时间:2014-10-18 10:21:24

标签: c++

我无法使用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
}

DEMO

我们可以看到wcout&#39; operator<<没有正确打印这些字符,同时cout&#39; s operator<<执行此操作好。我还对任何其他类似的人提起过wcout 'л', 'ਚੰ', 'ਗਾ', 'კ', 'ა', 'რ', 'გ', 'ი'等等,但它只能打印一个Latinic字符或数字。

0 个答案:

没有答案