gpt4 book ai didi

C++ 重载 << 运算符

转载 作者:太空宇宙 更新时间:2023-11-03 10:21:19 25 4
gpt4 key购买 nike

我需要重载 << 运算符以使流与内置类型一起工作。对于字符串,这不是问题,因为我只是像这样重载函数:

ostream& operator<<(ostream& os, const char* str) { /*...*/ }

这是有效的,因为这个函数是全局的,而不是成员。问题是我需要为其他原始类型(整数、 float 等)重载 << 运算符,但那些是成员函数。有什么办法可以做到这一点?我需要它不仅与 cout 一起工作,而且还需要与其他流一起工作。提前致谢。

最佳答案

您不应该尝试更改 std::cout << 3; 中的运算符做。它是标准 API 的一部分。如果您需要以流操纵器不支持的某种格式输出,那么例如您可以编写一个小包装器:

struct MyFormatter {
MyFormatter (ostream &o) : o(o) {}
ostream &o;
};

MyFormatter &operator<<(MyFormatter &mf, int i) {
mf.o << "int(" << i << ")"; // or whatever
return mf;
}

然后像这样使用它:

MyFormatter mf(std::cout);
mf << 1 << "," << 2 << "," << 3;

关于C++ 重载 << 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4113335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com