Uploaded image for project: 'C++ Standard Library'
  1. C++ Standard Library
  2. STDCXX-296

std::basic_ostream::operator<<(const wchar_t*)

    XMLWordPrintableJSON

Details

    • New Feature
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 4.1.2, 4.1.3, 4.1.4, 4.2.0, 4.2.1
    • 4.3.0
    • 27. Input/Output
    • None
    • all

    • Usability

    Description

      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 ());
      }

      Attachments

        1. ostream.diff
          4 kB
          Martin Sebor

        Activity

          People

            sebor Martin Sebor
            sebor Martin Sebor
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:

              Time Tracking

                Estimated:
                Original Estimate - 24h
                24h
                Remaining:
                Time Spent - 2h Remaining Estimate - 22h
                22h
                Logged:
                Time Spent - 2h Remaining Estimate - 22h
                2h