problem about wofstream

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • mimi

    #1

    problem about wofstream

    With a wofstream, we can input wstring into a file. But when i input
    some wide character of chinese characters into a file, some error
    occur.
    With the implementation of STLport 4.62, the wstring of chines
    characters were written to the file; But with the implementation of
    MS, that is both in VC6.0 and Visual Studio 2005, noting was written
    to the file.I don't know why and I wonder to know what the C++
    standard said about this? What does the standard guarantees while
    dealing with unicode characters?Wher e could I find such information?
    Thanks for any advice.
    #include <fstream>

    int main()
    {
    std::wofstream strm2("test.txt ");
    strm2 << L"ÎÒ°®±±¾©Ì찲à Å";

    return 0;
    }

  • chunhuachunhua1984@gmail.com

    #2
    Re: problem about wofstream

    On Mar 30, 2:47 pm, "mimi" <cainiaodelixi. ..@gmail.comwro te:
    With a wofstream, we can input wstring into a file. But when i input
    some wide character of chinese characters into a file, some error
    occur.
    With the implementation of STLport 4.62, the wstring of chines
    characters were written to the file; But with the implementation of
    MS, that is both in VC6.0 and Visual Studio 2005, noting was written
    to the file.I don't know why and I wonder to know what the C++
    standard said about this? What does the standard guarantees while
    dealing with unicode characters?Wher e could I find such information?
    Thanks for any advice.
    #include <fstream>
    >
    int main()
    {
    std::wofstream strm2("test.txt ");
    strm2 << L"ÎÒ°®±±¾©Ì찲à Å";
    >
    return 0;
    I think u should call strm2.close() before return 0,and i find it can
    good work.


    Comment

    • =?utf-8?B?S2lyaXQgU8OmbGVuc21pbmRl?=

      #3
      Re: problem about wofstream

      On Mar 30, 1:47 pm, "mimi" <cainiaodelixi. ..@gmail.comwro te:
      With a wofstream, we can input wstring into a file. But when i input
      some wide character of chinese characters into a file, some error
      occur.
      With the implementation of STLport 4.62, the wstring of chines
      characters were written to the file; But with the implementation of
      MS, that is both in VC6.0 and Visual Studio 2005, noting was written
      to the file.I don't know why and I wonder to know what the C++
      standard said about this? What does the standard guarantees while
      dealing with unicode characters?Wher e could I find such information?
      Thanks for any advice.
      #include <fstream>
      >
      int main()
      {
      std::wofstream strm2("test.txt ");
      strm2 << L"æˆ‘çˆ±åŒ—äº¬å ¤©å®‰é—¨";
      >
      return 0;
      >
      }
      The wide output streams in MSVC don't act as you would expect. The
      streams are not able to handle any characters outside the 0..255
      range.

      To do better you'll have to get different libraries, or write your own
      wrapper to do the translations for the formats you want to use.

      You may also find that you have problems with the source code if you
      drop those characters in like that too, but I admit to being unsure as
      to what text formats the compiler assumes or can read.


      K

      Comment

      • P.J. Plauger

        #4
        Re: problem about wofstream

        "Kirit Sælensminde" <kirit.saelensm inde@gmail.comw rote in message
        news:1175248674 .952413.131560@ y80g2000hsf.goo glegroups.com.. .

        On Mar 30, 1:47 pm, "mimi" <cainiaodelixi. ..@gmail.comwro te:
        With a wofstream, we can input wstring into a file. But when i input
        some wide character of chinese characters into a file, some error
        occur.
        With the implementation of STLport 4.62, the wstring of chines
        characters were written to the file; But with the implementation of
        MS, that is both in VC6.0 and Visual Studio 2005, noting was written
        to the file.I don't know why and I wonder to know what the C++
        standard said about this? What does the standard guarantees while
        dealing with unicode characters?Wher e could I find such information?
        Thanks for any advice.
        #include <fstream>
        >
        int main()
        {
        std::wofstream strm2("test.txt ");
        strm2 << L"???????";
        >
        return 0;
        >
        }
        The wide output streams in MSVC don't act as you would expect. The
        streams are not able to handle any characters outside the 0..255
        range.

        [pjp] You're talking about the default codecvt facet, which has this
        limitation. The wide streams work fine.

        To do better you'll have to get different libraries, or write your own
        wrapper to do the translations for the formats you want to use.

        [pjp] Or get a better codecvt facet. See, for example, our Compleat
        Library add-on, which defines dozens.

        P.J. Plauger
        Dinkumware, Ltd.



        Comment

        Working...