gpt4 book ai didi

c++ - 在 Visual Studio 2005 输出窗口中捕获 cout?

转载 作者:IT老高 更新时间:2023-10-28 22:10:14 29 4
gpt4 key购买 nike

我创建了一个 C++ 控制台应用程序,只想在 Visual Studio 2005 IDE 的输出窗口中捕获 cout/cerr 语句。我确定这只是我缺少的设置。谁能指出我正确的方向?

最佳答案

我终于实现了,所以想和大家分享一下:

#include <vector>
#include <iostream>
#include <windows.h>
#include <boost/iostreams/stream.hpp>
#include <boost/iostreams/tee.hpp>

using namespace std;
namespace io = boost::iostreams;

struct DebugSink
{
typedef char char_type;
typedef io::sink_tag category;

std::vector<char> _vec;

std::streamsize write(const char *s, std::streamsize n)
{
_vec.assign(s, s+n);
_vec.push_back(0); // we must null-terminate for WINAPI
OutputDebugStringA(&_vec[0]);
return n;
}
};

int main()
{
typedef io::tee_device<DebugSink, std::streambuf> TeeDevice;
TeeDevice device(DebugSink(), *cout.rdbuf());
io::stream_buffer<TeeDevice> buf(device);
cout.rdbuf(&buf);

cout << "hello world!\n";
cout.flush(); // you may need to flush in some circumstances
}

额外提示:如果你写:

X:\full\file\name.txt(10) : message

到输出窗口,然后双击它,Visual Studio 将跳转到给定文件的第 10 行,并在状态栏中显示“消息”。它非常很有用。

关于c++ - 在 Visual Studio 2005 输出窗口中捕获 cout?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73286/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com