相关疑难解决方法(0)

如何将cin和cout重定向到文件?

我怎样才能重定向cinin.txtcoutout.txt

c++

125
推荐指数
5
解决办法
16万
查看次数

将stdout/stderr重定向到字符串

以前有很多关于将stdout/stderr重定向到文件的问题.有没有办法将stdout/stderr重定向到字符串?

c c++ stdout stderr

52
推荐指数
5
解决办法
6万
查看次数

如何创建自己的ostream/streambuf?

出于教育目的,我想创建一个ostream和流缓冲区来做:

  1. 做<< myVar时修复endians;
  2. 存储在deque容器中而不是使用std:cout或写入文件
  3. 记录额外的数据,例如我做了多少次<<,我做了多少次.write,我写的字节数和flush()的次数.但我不需要所有的信息.

我尝试过载,但失败的可怕.我试着通过写入来重载

ostream& write( const char* s, streamsize n ) 
Run Code Online (Sandbox Code Playgroud)

在我的basic_stringstream2类中(我复制粘贴basic_stringstream到我的cpp文件并修改它)但代码保持使用basic_ostream.我查看了代码,看起来我需要重载xsputn(这个页面上没有提到http://www.cplusplus.com/reference/iostream/ostream)但是我还需要重载多少?以及如何构建我的类(它需要继承什么等)?

c++ ostream streambuf

22
推荐指数
2
解决办法
2万
查看次数

将std :: cout重定向到自定义编写器

我想使用Mr-Edd的iostreams文章中的这个片段在某处打印std :: clog.

#include <iostream>
#include <iomanip>
#include <string>
#include <sstream>

int main()
{
    std::ostringstream oss;

    // Make clog use the buffer from oss
    std::streambuf *former_buff =
        std::clog.rdbuf(oss.rdbuf());

    std::clog << "This will appear in oss!" << std::flush;

    std::cout << oss.str() << '\\n';

    // Give clog back its previous buffer
    std::clog.rdbuf(former_buff);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

所以,在一个主循环中,我会做类似的事情

while (! oss.eof())
{
    //add to window text somewhere
}
Run Code Online (Sandbox Code Playgroud)

这是ostringstream文档,但我无法理解这样做的最佳方法.我有一个显示文本的方法,我只想用ostringstream中的任何数据调用它.

将发送到std :: clog的任何内容重定向到我选择的方法的最简单/最好的方法是什么?它是如上所述,并填写while!eof部分(不确定如何),或者是否有更好的方法,比如通过在调用我的方法的地方重载一些'commit'运算符?我喜欢快速简单,我真的不想开始定义接收器,就像文章那样使用boost iostreams - 这些东西已经超出了我的想象.

c++ iostream stream stringstream streambuf

6
推荐指数
3
解决办法
9303
查看次数

使用std :: cout添加时间戳

我有以下代码将我的std::cout输出重定向到日志文件.

std::ofstream out("out.txt");
std::streambuf *coutbuf = std::cout.rdbuf(); //save old buf
std::cout.rdbuf(out.rdbuf()); //redirect std::cout to out.txt!
Run Code Online (Sandbox Code Playgroud)

现在我想要的是,每当发生换行时,当前时间戳将被写入文件.

我知道我可以用以下方法实现:

std::cout << getTime() << "printing data" << std::endl;
Run Code Online (Sandbox Code Playgroud)

但我想要的是以std::cout某种方式自动处理它.那可能吗?

c++ logging iostream

5
推荐指数
1
解决办法
5251
查看次数

标签 统计

c++ ×5

iostream ×2

streambuf ×2

c ×1

logging ×1

ostream ×1

stderr ×1

stdout ×1

stream ×1

stringstream ×1