Small example: ================================================== #include <iostream> #include <locale>
using namespace std; int main() { locale::global(locale("")); wcout.imbue(locale()); wcout << "Hello world! ðÒÉ×ÅÔ ÍÉÒ!" << endl; return 0; } ================================================== Actual output: Hello world! ! Expected output: Hello world! ðÒÉ×ÅÔ ÍÉÒ! Compilation command and output: ================================================== $ g++ -v -save-temps cpptest.cpp Using built-in specs. Target: x86_64-pc-linux-gnu Configured with: /var/tmp/portage/sys-devel/gcc-4.3.1-r1/work/gcc-4.3.1/configure --prefix=/usr --bindir=/usr/x86_64-pc-linux-gnu/gcc-bin/4.3.1 --includedir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/include --datadir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.3.1 --mandir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.3.1/man --infodir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.3.1/info --with-gxx-include-dir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/include/g++-v4 --host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --disable-altivec --enable-nls --without-included-gettext --with-system-zlib --disable-checking --disable-werror --enable-secureplt --enable-multilib --disable-libmudflap --disable-libssp --enable-cld --disable-libgcj --enable-languages=c,c++,treelang,fortran --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --with-bugurl=http://bugs.gentoo.org/ --with-pkgversion='Gentoo 4.3.1-r1 p1.1' Thread model: posix gcc version 4.3.1 (Gentoo 4.3.1-r1 p1.1) COLLECT_GCC_OPTIONS='-v' '-save-temps' '-shared-libgcc' '-mtune=generic' /usr/libexec/gcc/x86_64-pc-linux-gnu/4.3.1/cc1plus -E -quiet -v -D_GNU_SOURCE cpptest.cpp -mtune=generic -fpch-preprocess -o cpptest.ii ignoring nonexistent directory "/usr/local/include" ignoring nonexistent directory "/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/../../../../x86_64-pc-linux-gnu/include" #include "..." search starts here: #include <...> search starts here: /usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/include/g++-v4 /usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/include/g++-v4/x86_64-pc-linux-gnu /usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/include/g++-v4/backward /usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/include /usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/include-fixed /usr/include End of search list. COLLECT_GCC_OPTIONS='-v' '-save-temps' '-shared-libgcc' '-mtune=generic' /usr/libexec/gcc/x86_64-pc-linux-gnu/4.3.1/cc1plus -fpreprocessed cpptest.ii -quiet -dumpbase cpptest.cpp -mtune=generic -auxbase cpptest -version -o cpptest.s GNU C++ (Gentoo 4.3.1-r1 p1.1) version 4.3.1 (x86_64-pc-linux-gnu) compiled by GNU C version 4.3.1, GMP version 4.2.2, MPFR version 2.3.1. GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 70848920b58e0e1c3b1cfc0cd9dd8b3c COLLECT_GCC_OPTIONS='-v' '-save-temps' '-shared-libgcc' '-mtune=generic' /usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/../../../../x86_64-pc-linux-gnu/bin/as -V -Qy -o cpptest.o cpptest.s GNU assembler version 2.18 (x86_64-pc-linux-gnu) using BFD version (GNU Binutils) 2.18 COMPILER_PATH=/usr/libexec/gcc/x86_64-pc-linux-gnu/4.3.1/:/usr/libexec/gcc/x86_64-pc-linux-gnu/4.3.1/:/usr/libexec/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/libexec/gcc/x86_64-pc-linux-gnu/4.3.1/:/usr/libexec/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/../../../../x86_64-pc-linux-gnu/bin/ LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/../../../../x86_64-pc-linux-gnu/lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/../../../:/lib/:/usr/lib/ COLLECT_GCC_OPTIONS='-v' '-save-temps' '-shared-libgcc' '-mtune=generic' /usr/libexec/gcc/x86_64-pc-linux-gnu/4.3.1/collect2 --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 /usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/../../../../lib64/crt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/../../../../lib64/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/crtbegin.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/../../../../x86_64-pc-linux-gnu/lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/../../.. cpptest.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/crtend.o /usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/../../../../lib64/crtn.o ================================================== System: linux (gentoo), amd64 -- Summary: Wrong char to wchar_t conversion when putting multibyte strings to wide-character streams Product: gcc Version: 4.3.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: mironov dot ivan at gmail dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36899