printf、wprintf、std::cout和std::wcout在Linux命令行的输出问题
弟十六 2015-08-25 12:22:58 printf和wprintf好像是互斥的,谁第一个输出过一次,另一个调用就无法正确输出。例如:
printf( "string. \n" );
wprintf( L"wstring. \n" );
结果输出的是:string. 如果调整先后顺序:
wprintf( L"wstring. \n" );
printf( "string. \n" );
结果输出的就是:wstring.
std::cout和std::wcout有点不同,就是如果std::cout在std::wcout在之前调用,那么都可以正确输出,而如果先调用std::wcout输出,那么该进程之后调用的std::cout都无法输出。例如:
std::cout << "string. \n";
std::wcout << L"wstring. \n";
结果输出:
string.
wstring.
而如果这样:
std::wcout << L"wstring. \n";
std::cout << "string. \n";
输出就只有:
wstring.
以上情况在Windows上无论是VS还是MinGW都没有这个问题,这是为什么呢?
我的测试环境是:CentOS 6.5、GCC 5.2