You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@stdcxx.apache.org by "Martin Sebor (JIRA)" <ji...@apache.org> on 2007/09/07 16:29:31 UTC

[jira] Updated: (STDCXX-296) std::basic_ostream::operator<<(const wchar_t*)

     [ https://issues.apache.org/jira/browse/STDCXX-296?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Martin Sebor updated STDCXX-296:
--------------------------------

    Fix Version/s: 4.3

Too big for 4.2.1, scheduled for 4.3.

> std::basic_ostream::operator<<(const wchar_t*)
> ----------------------------------------------
>
>                 Key: STDCXX-296
>                 URL: https://issues.apache.org/jira/browse/STDCXX-296
>             Project: C++ Standard Library
>          Issue Type: New Feature
>          Components: 27. Input/Output
>    Affects Versions: 4.1.2, 4.1.3
>         Environment: all
>            Reporter: Martin Sebor
>             Fix For: 4.3
>
>         Attachments: ostream.diff
>
>
> There is a pair of generic insertion and extraction operators for const char* (i.e., that make it possible to insert/extract narrow character strings to/from a stream object specialized on wchar_t or even user-defined character type), but there are no such operators for wchar_t (i.e., that would
> make it possible to insert/extract arrays of wchar_t elements to/from narrow streams or streams specialized on a user-defined character type).
> Such operators would provide a useful and convenient interface to the low-level codecvt facet, one that could be used to perform in memory
> codeset conversion just as easily and conveniently as fstream performs such conversions on files. Here's an example of how the insertion
> operator could be used to easily convert from UCS to UTF-8:
> #include <cassert>   // for assert()
> #include <cwchar>    // for mbstate_t
> #include <locale>    // for codecvt, locale
> #include <sstream>   // for ostringstream
> int main ()
> {
>     std::stringstream ostrm;
>     typedef std::codecvt_byname<wchar_t, char, std::mbstate_t> Unicode;
>     ostrm.imbue (std::locale (ostrm.getloc (), new Unicode ("UTF-8@UCS")));
>     // convert the UCS Greek letters alpha, beta, gamma to UTF-8
>     // expected UTF-8 encoding: "\xce\xb1\xce\xb2\xce\xb3"
>     ostrm << L"\x3b1\x3b2\x3b3";
>     assert ("\xce\xb1\xce\xb2\xce\xb3" == ostrm.str ());
> }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.