Re: wifstream & locale
On Feb 5, 7:53 am, koara <ko...@atlas.cz> wrote:
> Hello all,
>
> I needed to read contents of an UTF8 encoded file in C++ (gcc version
> 3.3.5 on Linux). I decided to do it the C++ way, using streams:
>
> -------------
> std::locale utf8loc("en_US.utf8");
> std::wifstream ifs("smthg");
> ifs.imbue(utf8loc);
> std::wstring item;
>
> while (ifs >> item) {
> here
> }
>
> ------------
>
> but the inner block ("here") never gets executed. I tried searching
> around the web and my head spins, surely doing such mundane,
> straightforward task cannot be that complicated in C++? What am I
> doing wrong please? What should I test for, look out for?
>
> Cheers.
>
> To narrow down my problem:
> * I don't want to use any non-standard functions, libraries etc.
> * the input file is in UTF8, I want to read (parts of) its contents as
> wstring
>
> ---------------
> $ locale -a
> C
> POSIX
> en_GB.utf8
> en_US.utf8
Mayhaps the file "smthg" does not contain text that is convertable to
a wstring? or no text at all?
What's in the file? Also did you ever check if it actually got opened?
Is it in the proper directory?
|