【发布时间】:2014-04-03 04:45:22
【问题描述】:
我将标准输出数据重定向到 std::ofstream 缓冲区,以将数据写入文件。下面的代码实现了这一点,
if ( isActive ){
try{
std::string traceFileName = "traceLog"+getTime()+".log";
std::ofstream out(traceFileName.c_str());
std::streambuf *countbuf = std::cout.rdbuf();
std::cout.rdbuf ( out.rdbuf() ) ;
std::cout<<"buffer pointed\n"<<std::endl;
}
当我在单个 .cpp 中实现上述代码时,itgeting 被执行,dada 正在文件中写入。但是对于以下场景,
A( bool isActive){
if ( isActive ){
try{
std::string traceFileName = "traceLog"+getTime()+".log";
std::ofstream out(traceFileName.c_str());
std::streambuf *countbuf = std::cout.rdbuf();
std::cout.rdbuf ( out.rdbuf() ) ;
std::cout<<"buffer pointed\n"<<std::endl;
}
从不同的 .cpp 函数 A(true) 被调用,我希望在我的整个 c++ 项目中调用 A() 之后 std::cout
(process:10365): GConf-WARNING **: Client failed to connect to the D-BUS daemon:
没有收到回复。可能的原因包括:远程应用未发送回复、消息总线安全策略阻止回复、回复超时或网络连接中断。
(process:10365): GConf-WARNING **: 客户端无法连接到 D-BUS 守护进程: 没有收到回复。可能的原因包括:远程应用未发送回复、消息总线安全策略阻止回复、回复超时或网络连接中断。
(process:10365): GConf-WARNING **: 客户端无法连接到 D-BUS 守护进程: 没有收到回复。可能的原因包括:远程应用程序未发送回复、消息总线安全策略阻止回复、回复超时或网络连接中断。 QGtkStyle 无法检测到当前的 GTK+ 主题。 Qt:会话管理错误:不支持指定的身份验证协议
但如果我将以下代码放在 main 中,
std::string traceFileName = "traceLog"+getTime()+".log";
std::ofstream out(traceFileName.c_str());
std::streambuf *countbuf = std::cout.rdbuf();
std::cout.rdbuf ( out.rdbuf() ) ;
运行时所有 std::cout 数据正在写入文件中。 ut 抛出以下错误。我该如何解决这个错误。
enter code here(process:10777): GConf-WARNING **: Client failed to connect to the D-BUS daemon:
没有收到回复。可能的原因包括:远程应用未发送回复、消息总线安全策略阻止回复、回复超时或网络连接中断。
(process:10777): GConf-WARNING **: 客户端无法连接到 D-BUS 守护进程: 没有收到回复。可能的原因包括:远程应用未发送回复、消息总线安全策略阻止回复、回复超时或网络连接中断。
(process:10777): GConf-WARNING **: 客户端无法连接到 D-BUS 守护进程: 没有收到回复。可能的原因包括:远程应用程序未发送回复、消息总线安全策略阻止回复、回复超时或网络连接中断。 QGtkStyle 无法检测到当前的 GTK+ 主题。 Qt:会话管理错误:不支持指定的身份验证协议
【问题讨论】:
-
您的函数变量在函数退出时被销毁。
cout在此之前永远不会恢复到其原始状态,并且正在使用一个不再存在的缓冲区,因为ostream也被销毁了。这是我唯一能想到的atm..
标签: c++ qt security azure c++11