printf()和cout在c++中的区别是什么?


当前回答

更多的差异: "printf"返回一个整数值(等于打印的字符数),"cout"不返回任何东西

And.

Cout << "y = " << 7;不是原子的。

Printf ("%s = %d", "y", 7);是原子的。

Cout执行类型检查,printf不执行。

iostream中没有% d的等价物

其他回答

Printf是一个函数而cout是一个变量。

cout<< "Hello";
printf("%s", "Hello"); 

两者都用于打印值。它们有完全不同的语法。c++两者都有,C 只有printf。

对于原语,使用哪个原语可能并不重要。当你想输出复杂的对象时它才有用。

例如,如果你有一门课,

#include <iostream>
#include <cstdlib>

using namespace std;

class Something
{
public:
        Something(int x, int y, int z) : a(x), b(y), c(z) { }
        int a;
        int b;
        int c;

        friend ostream& operator<<(ostream&, const Something&);
};

ostream& operator<<(ostream& o, const Something& s)
{
        o << s.a << ", " << s.b << ", " << s.c;
        return o;
}

int main(void)
{
        Something s(3, 2, 1);

        // output with printf
        printf("%i, %i, %i\n", s.a, s.b, s.c);

        // output with cout
        cout << s << endl;

        return 0;
}

现在,上面的内容可能看起来并不是很好,但是让我们假设您必须在代码中的多个地方输出这些内容。不仅如此,假设您添加了一个字段“int d”。使用cout,您只需要在一个地方更改它。然而,使用printf,你可能需要在很多地方改变它,不仅如此,你还需要提醒自己输出哪些。

尽管如此,使用cout,您可以减少大量用于维护代码的时间,不仅如此,如果您在新应用程序中重用对象“Something”,您实际上不必担心输出。

一个是输出到标准输出的函数。另一个是一个对象,它提供了几个成员函数和输出到stdout的操作符<<的重载。我可以列举更多的不同之处,但我不确定你想要的是什么。

更多的差异: "printf"返回一个整数值(等于打印的字符数),"cout"不返回任何东西

And.

Cout << "y = " << 7;不是原子的。

Printf ("%s = %d", "y", 7);是原子的。

Cout执行类型检查,printf不执行。

iostream中没有% d的等价物