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

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

    XMLWordPrintableJSON

    Details

    • Type: New Feature
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: 4.1.2, 4.1.3, 4.1.4, 4.2.0, 4.2.1
    • Fix Version/s: 4.3.0
    • Component/s: 27. Input/Output
    • Labels:
      None
    • Environment:

      all

    • Severity:
      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

            • Assignee:
              sebor Martin Sebor
              Reporter:
              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