如何将ostream转换为basic_ostream <unsigned char =“”>?</unsigned>

时间:2013-10-23 15:23:23

标签: c++

我有一个接受basic_ostream作为参数

的方法
write_sth_to( basic_ostream<unsigned char> &s );

有什么方法可以将std :: cout(或任何basic_ostream&lt; char&gt;)传递给它?感谢。

1 个答案:

答案 0 :(得分:0)

如果我是你,我会写一个包装函数来处理它,因为你不能简单地将basic_ostream<char>转换为basic_ostream<unsigned char>。像下面这样的东西可能会起作用(注意:未经测试的代码)

void wrapper(basic_ostream<char>& os)
{
    basic_stringstream<unsigned char> us;
    write_sth_to(us);
    transform(istream_iterator<unsigned char>(us),
              istream_iterator<unsigned char>(),
              ostream_iterator<char>(os, ""),
              char_to_unsigned_char
    );
}

函数char_to_unsigned_char是你自己编写的东西(我不知道你打算如何在这两种类型之间进行转换)。记住这个未经测试的,但它可能会让你知道从哪里开始。