假设我想对传递给cout(或另一个ostream)的每个字符串进行rot13处理,例如
我该怎么做呢?
(我的第一个想法是用派生自streambuf的类替换cout的streambuf,让它完成所有工作。但是由于原始streambuf负责将东西定向到控制台...这根本行不通。)
cout<<"Foo Bar Baz.;"
(甚至cout<<rot13<<"Foo Bar Baz.";
),输出Sbb One Onm.
。我该怎么做呢?
(我的第一个想法是用派生自streambuf的类替换cout的streambuf,让它完成所有工作。但是由于原始streambuf负责将东西定向到控制台...这根本行不通。)
cout<<rot13<<"Foo Bar Baz."
将给我所需的结果。(我刚注意到我的问题不允许这样做;我会修复它。)这个答案的一个问题是操纵器停止工作(无法使用您的代码进行cout<<endl;
或使用我的修改进行cout<<rot13<<endl;
)。 - Anubhav C