我不知道我正在寫是有道理的,但我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