C++ 如何将wostream转换为ostream

C++ 如何将wostream转换为ostream,c++,unicode,ostream,C++,Unicode,Ostream,我正在使用一个接收ostream的函数,但我有一个问题,有没有办法将一个转换成另一个 特别是我想使用boost::write_graphviz,它接受ostream,但我目前在中,我不相信您可以转换。你必须得到一个ostream。如果我是你,我宁愿改变我的方法,而不是尝试将wostream转换为ostream。我相信,你想要得到的东西可以很容易地实现没有广泛的字符流 当然,这取决于应用程序的实际用途,但在10种情况中的9种情况下,简单实现您自己的转换例程或使用第三方库(例如,iconv)显然就足

我正在使用一个接收ostream的函数,但我有一个问题,有没有办法将一个转换成另一个


特别是我想使用boost::write_graphviz,它接受ostream,但我目前在中,我不相信您可以转换。你必须得到一个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());
}


std::wstring转换(std::string const&s)
{
unsigned char const*tmp=reinterpret_cast(s.data());
std::wstring res=std::wstring(tmp,tmp+s.size());
返回res;
}
空f(标准::wostream&out)
{
std::ostringstream痛风;
痛风