是否可以传入一个字符串流并让函数直接写入它?
我记得我看到过一个类似于这样的函数:
my_func(ss << "text" << hex << 33);
答案 0 :(得分:18)
当然可以。为什么不呢?此类函数的示例声明:
void my_func(std::ostringstream& ss);
答案 1 :(得分:9)
绝对!确保通过引用而不是按值传递它。
void my_func(ostream& stream) {
stream << "Hello!";
}
答案 2 :(得分:3)
my_func
必须有以下标志:
void my_func( std::ostream& s );
,因为那是ss << "text" << hex << 33
的类型。如果目标是
要提取生成的字符串,你必须做类似的事情:
void
my_func( std::ostream& s )
{
std::string data = dynamic_cast<std::ostringstream&>(s).str();
// ...
}
另请注意,您无法使用临时流;
my_func( std::ostringstream() << "text" << hex << 33 );
将无法编译(除非可能使用VC ++),因为它不是合法的C ++。您 可以这样写:
my_func( std::ostringstream().flush() << "text" << hex << 33 );
如果你想使用临时的。但那不是用户友好。
答案 3 :(得分:1)