problem about wofstream

M

mimi

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?Where could I find such information?
Thanks for any advice.
#include <fstream>

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

return 0;
}
 
C

chunhuachunhua1984

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?Where 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.
 
G

Guest

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?Where 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
 
P

P.J. Plauger

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?Where 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.
http://www.dinkumware.com
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,007
Latest member
obedient dusk

Latest Threads

Top