C++ 流二次插入运算符

标签 c++ stream operator-keyword insertion

是否可以定义第二个插入运算符以具有两种输出类的模式?比如说一种输出所有成员,另一种只输出一些基本的唯一标识符,该标识符可以在日志中进行 grep 处理?如果是这样,是否有通常选择的运算符?我猜想类似于 <<人们可能会使用 <<<这是否合法?

谢谢

最佳答案

如果您只想输出 id,那么最好的办法可能是提供一种方法来获取可流式传输的 id(例如 std::string id() const;)。对于其他处理代码的人来说,这比一些奇怪的运算符(operator)使用更直观。

您对<<<的建议(不可能在 C++ 中创建新的运算符,但暂时忽略它)表明您很高兴在调用点有不同的代码。因此,你得到的唯一好处就是节省了一些角色的源代码;不值得混淆。

相比之下,在某些情况下,您希望相同的流式表示法调用不同的行为,例如在仅 ID 数据和完整数据之间切换,或者不同的表示形式,例如标签/值、CSV、XML 和二进制。这些备选方案通常最好通过以下方式传达:

关于C++ 流二次插入运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6840759/

相关文章:

c++ - 在未安装 visual 的计算机上设置 xll

c++ - 对于数据成员,如果包含对象已经在动态内存中,则动态分配(或不分配)此变量之间有什么区别吗?

java - InputStream 在 spring Controller 中关闭

python - 让 Python 对象的单个实例监听 future 参数的顺序

java - Java 中 Double 的运算符 +=

c++ - 带有运算符的简单用户定义类 = 重载代码崩溃

c++ - 从二阶导数计算的曲线的 SIMD 优化

java - 增加 Java FileInputStream 使用的内部缓冲区大小

haskell - 封闭括号内的美元符号

c++ vector - push_back(*new obj()) 和 push_back(obj()) 有什么区别?