如何捕获 cout 的输入?
例子:
如果我输入:
std::cout<<"Some normal text here" << fout <<"Test %, %", 1, 2<< "works 100% fine."<<std::endl
然后它会打印:
“这里的一些普通文本测试 1、2 可以 100% 正常工作。”
由于 << 运算符,100% 未格式化。只有在 fout 之后的内容才会被格式化,直到遇到 << 运算符。
我可以这样做吗?
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
std::ostream& fout (std::ostream& I)
{
//Some how format my text here.. Then return it as the ostream.
return I;
}
int main(int argc, char* argv[])
{
std::cout<< fout << "Test %", 1 << "Other stuff 20%.";
//So Anything after fout<< should be stolen and formatted then given back to cout.. Other stuff 20% isn't formatted because of the <<.
}
我知道这看起来很愚蠢,但我真的很想知道它是如何完成的。我看到 boost 通过执行 Format("%20") % SomeVar 做了类似的事情
但我想弄清楚如何使用插入运算符和逗号运算符来做到这一点。有什么想法或类似的吗?