我正在使用接收ostream的函數,但我有wostream有沒有辦法將一個轉換爲另一個?我該如何轉換從wostream到ostream
特別是我想使用boost :: write_graphviz,它採用ostream,但我目前在< < <運算符爲wostream。
我正在使用接收ostream的函數,但我有wostream有沒有辦法將一個轉換爲另一個?我該如何轉換從wostream到ostream
特別是我想使用boost :: write_graphviz,它採用ostream,但我目前在< < <運算符爲wostream。
我不相信你可以轉換。你將不得不得到一個ostream。
如果我是你,我寧願改變我的方法,而不是試圖將wostream
轉換爲ostream
。我相信,如果沒有廣泛的字符流,你想要得到的東西很容易實現。
當然,這取決於您的應用程序的實際用途是什麼,但在10個案例中的9個案例中,您自己的轉換例程或使用第三方庫的簡單實現(例如iconv
)顯然就足夠了。
更新:(如我在說什麼的證明) 谷歌代碼有wofstream
和兩個只有一個搜索結果 - 爲wifstream
。這個事實沒有說明問題嗎?
如果圖形輸出沒有wostream運營商,那麼你可以這樣做:
std::wstring convert(std::string const& s)
{
unsigned char const* tmp = reinterpret_cast<unsigned char const*>(s.data());
std::wstring res = std::wstring(tmp, tmp + s.size());
return res;
}
void f(std::wostream & out)
{
std::ostringstream gout;
gout << graph; // or whatever...
out << convert(gout.str());
}
演員是必要的,如果你的字符串可以有177以上的任何值,如果可以轉成奇怪的字符,因爲wstring構造函數將轉換爲負數而不是直接複製。
當然,您可以使用適配器將它們轉換。 – 2010-05-13 16:25:34