如何将类作为printf的有效参数提供给它作为字符串返回?

时间:2011-12-24 19:20:44

标签: c++ class parameters printf

我有一个类,我希望当我将它作为printf / sprintf的参数提供时,它被用作特定的字符串(取决于类中正在进行的操作)。有可能吗?

printf("blah blah  %s  ", customclass);

如果没有任何类型的类型转换以及没有像customclass.xyz()那样的必要函数调用,我该怎么办呢?

2 个答案:

答案 0 :(得分:4)

printf是一个可变函数,不能以任何合理的方式用于用户定义的类型。

如果您使用的是C ++,则出于这种原因,您应该更喜欢流(例如std::cout)到printf。使用流,您可以重载<<运算符:

class CustomClass
{
public:
    int x;
    int y;
};

ostream &operator<<(ostream &os, CustomClass c)
{
    os << "{" << c.x << "," << c.y << "}";
    return os;
}

...

CustomClass customclass;
customclass.x = 5;
customclass.y = 7;
std::cout << customclass << "\n";

答案 1 :(得分:0)

我认为这会奏效。

cout << "blah blah " << typeid(customclassobject OR customclass).name() << endl;

更新:如果你想打印类的成员(类似于Java中的toString(),那么Oli Charlesworth的答案是正确的。