2

可能重复:
混合 cout 和 printf 以获得更快的输出

我正在使用 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 吗?

4

1 回答 1

5

该标准说:

当标准 iostream 对象str与标准 stdio 流同步f时,插入字符的效果c

fputc(f, c);

是一样的效果

str.rdbuf()->sputc(c);

对于任何字符序列;

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

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

即使在您的实施中也必须产生“abc”。

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

于 2012-12-02T08:01:05.577 回答