C++ 如何将上下文信息传递给自定义运算符<&书信电报;对于std::iostream

C++ 如何将上下文信息传递给自定义运算符<&书信电报;对于std::iostream,c++,iostream,C++,Iostream,我有一个被大量使用(并且经过优化)的类型,它通过使用小整数来存储对更多数据的引用。为了调试,我想写一个运算符> P>我不知道你是否认为它或多或少难看,但也许有点像: debug_printer dp { db }; std::cout << dp(foo) << std::endl; 调试打印机dp{db}; STD:Couth我不知道你是否认为它或多或少丑陋,但也许有点像: debug_printer dp { db }; std::cout << dp(

我有一个被大量使用(并且经过优化)的类型,它通过使用小整数来存储对更多数据的引用。为了调试,我想写一个<代码>运算符> P>我不知道你是否认为它或多或少难看,但也许有点像:

debug_printer dp { db };
std::cout << dp(foo) << std::endl;
调试打印机dp{db};
STD:Couth

我不知道你是否认为它或多或少丑陋,但也许有点像:

debug_printer dp { db };
std::cout << dp(foo) << std::endl;
调试打印机dp{db};
STD:Couth

我不知道你是否认为它或多或少丑陋,但也许有点像:

debug_printer dp { db };
std::cout << dp(foo) << std::endl;
调试打印机dp{db};
STD:Couth

我不知道你是否认为它或多或少丑陋,但也许有点像:

debug_printer dp { db };
std::cout << dp(foo) << std::endl;
调试打印机dp{db};


std::cout您可以创建自己的操纵器
print\u数据库
哪个重载
操作符您可以创建自己的操纵器
print\u数据库
哪个重载
操作符您可以创建自己的操纵器
print\u数据库
哪个重载
操作符您可以创建自己的操纵器
print_数据库
哪个重载的
操作符不是
std::map中的
应该是
ItemData
?从
数据库
中通过
short
查找相关的
?我真的不明白为什么这是关于流的。为什么
print
会返回
os
std::map
中的
Item
不是应该是
ItemData
?通过
short
数据库中查找相关的
Item
?我真的不明白为什么这是关于流的。为什么
print
会返回
os
std::map
中的
Item
不是应该是
ItemData
?通过
short
数据库中查找相关的
Item
?我真的不明白为什么这是关于流的。为什么
print
会返回
os
std::map
中的
Item
不是应该是
ItemData
?通过
short
数据库中查找相关的
Item
?我真的不明白为什么这是关于流的。为什么
print
会返回
os
?以及
dp(foo)
会做什么?@Danvil要么返回
std::string
,要么返回一个实际进行打印的代理(这意味着实际上是某种生成器),要么将打印机中的某些内部状态设置为“用食物打印”。那么
dp(foo)
会做什么呢?@Danvil要么返回
std::string
,要么返回一个实际进行打印的代理(这意味着实际上是某种生成器),要么将打印机中的一些内部状态设置为“用食物打印”。那么
dp(foo)会做什么呢
do?@Danvil要么返回一个
std::string
,要么返回一个实际执行打印的代理(这意味着它实际上是某种生成器),要么将打印机中的某些内部状态设置为“用食物打印”。那么
dp(foo)会是什么呢
do?@Danvil要么返回一个
std::string
,要么返回一个实际执行打印的代理(这意味着它实际上是某种生成器),要么将打印机中的某些内部状态设置为“用食物打印”“。是否有理由使用
std::basic_ostream
而不是
std::ostream
?@Danvil我们使用模板化版本,因为用户可能使用不同的流类型打印。如果您只打算使用窄字符流,那么您可以使用
std::ostream
@Danvil这个答案有帮助吗?如果是,你介意点击复选标记接受我的答案吗?这很有帮助:)对,当然。实际上,我现在使用的是你的答案和另一个答案的混合(无需打印)。但您的说明更明确地说明了如何实现printer对象。是否有理由使用
std::basic_ostream
而不是
std::ostream
?@Danvil我们使用模板化版本,因为用户可能正在使用不同的流类型进行打印。如果您只打算使用窄字符流,那么您可以使用
std::ostream
@Danvil这个答案有帮助吗?如果是,你介意点击复选标记接受我的答案吗?这很有帮助:)对,当然。实际上,我现在使用的是你的答案和另一个答案的混合(无需打印)。但您的说明更明确地说明了如何实现printer对象。是否有理由使用
std::basic_ostream
而不是
std::ostream
?@Danvil我们使用模板化版本,因为用户可能正在使用不同的流类型进行打印。如果您只打算使用窄字符流,那么您可以使用
std::ostream
@Danvil这个答案有帮助吗?如果是,你介意点击复选标记接受我的答案吗?这很有帮助:)对,当然。实际上,我现在使用的是你的答案和另一个答案的混合(无需打印)。但您的说明更明确地说明了如何实现printer对象。是否有理由使用
std::basic_ostream
而不是
std::ostream
?@Danvil我们使用模板化版本,因为用户可能正在使用不同的流类型进行打印。如果您只打算使用窄字符流,那么您可以使用
std::ostream
@Danvil这个答案有帮助吗?如果是,你介意点击复选标记接受我的答案吗?这很有帮助:)对,当然。实际上,我现在使用的是你的答案和另一个答案的混合(无需打印)。但您的更明确地说明了如何实现printer对象。
std::cout << print(foo, db) << std::endl;