【发布时间】:2015-05-06 09:54:05
【问题描述】:
我想知道std::cout 是否有办法自动在打印的序列之间插入一些预定义的值。
例如:
std::cout << 2 << 3 << 33 << 45 << std::endl;
输出
233345
我希望它输出
2 3 33 45
我知道,这很容易:
std::cout << 2 << " " << 3 << " " << 33 << " " << 45 << std::endl;
但我想知道是否有办法自动执行此操作,例如:
std::cout << set_some_separator(" ") << 2 << 3 << 33 << 45 << std::endl;
有人知道这样的事情是可能的吗?
【问题讨论】:
-
我猜你可以从 cout 派生并重载
-
您可以重载运算符 en.cppreference.com/w/cpp/language/operators
-
@Laykker 但我们不能重载原始数据类型,我们只能重载类或枚举,所以我认为不可能像
ostreamObj << 2<<3; -
是的 @WojciechFrohmberg - 我的意思是从 std::ostream 派生。另一种选择是定义一个宏 #define SEPARATE( x ) x
-
@Jimmy 在您尝试复制构建基本流之前,这是个好主意;)
标签: c++