C ++混合printf和cout

时间:2012-12-02 07:44:59

标签: c++ printf cout

  

可能重复:
  mixing cout and printf for faster output

我正在使用Microsoft Visual Studio 6.0。

以下计划

#include "stdafx.h"
#include "iostream.h"

int main(int argc, char* argv[])
{
printf("a");
printf("b");
printf("c");
return 0;
}

产生“abc”。

以下程序,

#include "stdafx.h"
#include "iostream.h"

int main(int argc, char* argv[])
{
printf("a");
cout<<"b";
printf("c");
return 0;
}

产生“acb”。

有什么问题?我不能在同一个程序中混合使用cout和printf吗?

1 个答案:

答案 0 :(得分:5)

标准说:

  

当标准iostream对象str与标准同步时   stdio stream f,通过

插入字符c的效果
fputc(f, c);
     

的效果相同
str.rdbuf()->sputc(c);
     

任何字符序列;

默认情况下,除非您调用sync_with_stdio(false),否则cout会与stdout同步。因此,您的第二个代码段相当于:

printf("a");
fputc(stdout, 'b')
printf("c");

即使你的实施也必须产生“abc”。

底线:MSVC6不符合标准,因为它已经很老了,这并不奇怪。