我不知道我正在写是有道理的,但我remeber我看到了一个功能ivoked这样的:是否可以将stringstream作为函数参数传递?
my_func(ss << "text" << hex << 33);
这可能吗?
我不知道我正在写是有道理的,但我remeber我看到了一个功能ivoked这样的:是否可以将stringstream作为函数参数传递?
my_func(ss << "text" << hex << 33);
这可能吗?
当然可以。为什么不呢?举例说明这样的功能:
void my_func(std::ostringstream& ss);
谢谢你,我错过了什么,我知道这有点可能,但我不知道用什么声明来达到这种效果 – rsk82
除了'ss <<“test”<< hex << 33'的类型不是'std :: stringstream&',但是'std :: ostream&',并且不符合给定的签名。 –
@James Kanze这当然是正确的。 –
绝对!确保你通过引用传递它,而不是通过价值。
void my_func(ostream& stream) {
stream << "Hello!";
}
my_func
必须沿行签名:
void my_func(std::ostream& s);
,因为这是ss << "text" << hex << 33
的类型。如果目标是 提取生成的字符串,you'ld必须做一些事情,如:
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);
如果你想使用临时。但是这不是很方便用户。
不应该那么难尝试吗? – aztaroth