In my sample program, I expect
std::cout << "\xc3\xbc";
to output character 'ü' in the console after I've done
SetConsoleOutputCP( CP_UTF8 );
fputs( "\xc3\xbc", stdout );
works as expected (and fputs( "ü", stdout ) as well, choosing to save the source file UTF-8 encoded).
After using std::cout as above, std::cout.fail() is true.
I encountered this problem first trying to read UTF-8 encoded strings from the console, which I tried to discuss in http://groups.google.de/group/microsoft.public.win32.programmer.international/browse_thread/thread/e38aa923a32c20f9.