UI程序的std::cout重定向输出到Visual Studio的debug输出窗口

常用代码。
UI程序的std::cout重定向输出到Visual Studio的debug输出窗口

#include <iostream>
#include <streambuf>
#include <vector>
#include <string>
#include <afxwin.h> //MFC// 自定义 streambuf 类,用于重定向输出到 Visual Studio 的输出窗口
class OutputDebugStreamBuf : public std::streambuf {
public:OutputDebugStreamBuf() : buffer(256) {setp(buffer.data(), buffer.data() + buffer.size() - 1);}~OutputDebugStreamBuf() {sync();}protected:// 重写 overflow 方法,处理缓冲区溢出int_type overflow(int_type c) override {if (c != traits_type::eof()) {*pptr() = c;pbump(1);if (sync() != 0) {return traits_type::eof();}}return c;}// 重写 sync 方法,将缓冲区内容输出到 Visual Studio 的输出窗口int sync() override {if (pbase() != pptr()) {std::string output(pbase(), pptr() - pbase());OutputDebugStringA(output.c_str()); // 使用 OutputDebugStringA 输出setp(buffer.data(), buffer.data() + buffer.size() - 1); // 重置缓冲区}return 0;}private:std::vector<char> buffer; // 缓冲区
};// 管理 std::cout 重定向的类
class CoutRedirector {
public:CoutRedirector() {// 保存原始的 std::cout 缓冲区original_cout_buffer = std::cout.rdbuf();// 重定向 std::cout 到自定义的 streambufstd::cout.rdbuf(&debugStreamBuf);}~CoutRedirector() {// 恢复原始的 std::cout 缓冲区if (original_cout_buffer) {std::cout.rdbuf(original_cout_buffer);}}private:OutputDebugStreamBuf debugStreamBuf; // 自定义的 streambufstd::streambuf* original_cout_buffer = nullptr; // 保存原始的 std::cout 缓冲区
};// 全局变量,用于管理 std::cout 的重定向
CoutRedirector g_CoutRedirector;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/73336.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python开发合并多个PDF文件

前言 在我们的工作中&#xff0c;可能有以下场景需要用到合并多个PDF&#xff1a; 文档归档&#xff1a;在企业或组织中&#xff0c;常常需要将相关的文档&#xff08;如合同、报告、发票等&#xff09;合并为一个PDF文件&#xff0c;以便于归档和管理。 报告生成&#xff1a;在…

DeepSeek 助力 C++ 开发:探索智能编程新境界

这篇文章就会详细讲讲 DeepSeek 在 C 开发里到底能怎么用&#xff0c;从上面说的写代码、找错误、优化性能&#xff0c;到管理项目这些方面&#xff0c;还会给出好多实际的代码例子&#xff0c;讲讲实际用起来是啥情况。目的就是给那些做 C 开发的人&#xff0c;一份全面又详细…

C#-使用VisualStudio编译C#工程

一.创建csproj文件 二.创建源cs文件 三.生成解决方案 四.运行解决方案 五.VisualStudio功能列表 <1.代码格式化: CtrlKD完成代码整体格式化 <2.窗口布局 窗口->重置窗口布局 <3.引用查找&关联 <4.包管理 <5.日志输出级别 工具->选项->项目解决方案…

Kafka相关的面试题

以下是150道Kafka相关的面试题及简洁回答&#xff1a; Kafka基础概念 1. 什么是Kafka&#xff1f; Kafka是一个分布式、可扩展、容错的发布-订阅消息系统&#xff0c;最初由LinkedIn开发&#xff0c;现为Apache项目。它适用于高吞吐量的场景&#xff0c;如大数据处理和实时数据…

CTF--Web安全--SQL注入之报错注入

CTF–Web安全–SQL注入之报错注入 一、报错注入的概念 用户使用数据库查询语句&#xff0c;向数据库发送错误指令&#xff0c;数据库返回报错信息&#xff0c;报错信息中参杂着我们想要获取的隐私数据。通常在我们在页面显示中找不到回显位的时候&#xff0c;使用报错注入。 二…

深度学习中学习率调整策略

学习率衰减策略是深度学习优化过程中的一个关键因素&#xff0c;它决定了训练过程中学习率的调整方式&#xff0c;从而影响模型收敛的速度和效果。不同的衰减策略在不同的任务和模型上可能有不同的表现&#xff0c;下面从我用到过的几个衰减策略进行记录&#xff0c;后续慢慢跟…

JavaCV

调用摄像头 public class Camera {public static void main(String[] args) throws FrameGrabber.Exception {// 开启抓取器OpenCVFrameGrabber grabber new OpenCVFrameGrabber(0);grabber.start();// 开启窗口CanvasFrame canvasFrame new CanvasFrame("OpenCV Frame…

凝思linux修改mac地址

临时性修改 /sbin/ifconfig eth0 hw ether 00:0C:29:36:97:20

前端UI编程基础知识:基础三要素(结构→表现→行为)

以下是重新梳理的前端UI编程基础知识体系&#xff0c;结合最新技术趋势与实战要点&#xff0c;以更适合快速掌握的逻辑结构呈现&#xff1a; 一、基础三要素&#xff08;结构→表现→行为&#xff09; 1. HTML5 核心能力 • 语义化标签&#xff1a;<header>, <nav&g…

面试题:实现学生管理系统

这是我在以前面试中遇到的一个问题&#xff0c; 面试官说&#xff1a;你能现场实现一个学生管理系统吗&#xff0c;实现对学生的增删查改这4个功能 当时写了半天没写出来.....&#xff0c;所以我在这里记录一下 10分钟实现学生管理系统并实现 增删查改 功能 #include <iostr…

大语言模型基础—语言模型的发展历程--task1

目录 1.语言模型的发展历程 1.1 统计语言模型 1.2 神经语言模型 1.3 预训练语言模型 1.4 大语言模型 1.5 总结 1.6 各阶段对比与演进逻辑 1.语言模型的发展历程 语言模型的发展历程经历了四个主要阶段&#xff1a;统计语言模型、神经语言模型、预训练语言模型和大语言模…

BIG_EVENT

环境准备: 开发: 跨域问题: 只有浏览器才存在跨域问题, 此时浏览器的地址和前端服务一致,所以不存在跨域问题, 但是当浏览器中的js代码需要向8080发送请求时就会由于存在跨域问题而失败. 简单的说前端和浏览器的地址端口是一致的,浏览器只能向前端服务发送请求, 所以可以使用配…

DAY33 贪心算法Ⅱ

122. 买卖股票的最佳时机 II - 力扣&#xff08;LeetCode&#xff09; 想到把整体利润分解为每天的利润&#xff0c;就豁然开朗了。 class Solution { public:int maxProfit(vector<int>& prices) {int result0;for(int i1;i<prices.size();i){resultmax(0,pric…

【Qt】qApp简单介绍

1. 介绍 在Qt中&#xff0c;qApp是一个全局指针&#xff0c;它指向当前的QApplication或QGuiApplication对象。这个全局指针在Qt应用程序中非常有用&#xff0c;因为它可以让你在任何地方访问到应用程序对象。 在C中&#xff0c;全局指针是一个可以在程序的任何地方访问的指针…

Redis 设置密码无效问题解决

一、验证密码有没有生效 运行cmd&#xff0c;cd到redis的目录下 输入“redis-cli.exe” 回车 输入“auth 123456” 回车 若错误&#xff0c;说明没有设置密码或者设置的密码没有生效 输入“exit” 回车就立即退出redis 二、解决方案是&#xff1a;直接修改后缀是 .conf 的…

手写一些常见算法

手写一些常见算法 快速排序归并排序Dijkstra自定义排序交替打印0和1冒泡排序插入排序堆排序 快速排序 public class Main {public static void main(String[] args) {int nums[] {1,3,2,5,4,6,8,7,9};quickSort(nums,0,nums.length - 1);}private static void quickSort(int[…

VBA即用型代码手册:选择、转到Select、 Go To

我给VBA下的定义&#xff1a;VBA是个人小型自动化处理的有效工具。可以大大提高自己的劳动效率&#xff0c;而且可以提高数据的准确性。我这里专注VBA,将我多年的经验汇集在VBA系列九套教程中。 作为我的学员要利用我的积木编程思想&#xff0c;积木编程最重要的是积木如何搭建…

[CISSP] [1] 访问控制//入侵检测与网络防护

访问控制 检测性访问控制&#xff08;Detective Access Control&#xff09; 作用&#xff1a;用于发现和记录未经授权的活动。方式&#xff1a;这类控制本身不直接阻止攻击或违规行为&#xff0c;而是监测、检测并记录这些事件&#xff0c;以便后续调查或响应。例子&#xff1…

【SpringBoot】MD5加盐算法的详解

目录 一、什么是加盐算法 二、如何实现加盐算法 2.1 加盐算法代码实现 2.2 注册页面中进行密码加盐 2.3 登录页面进行加盐的解密 2.4 注册和登录 一、什么是加盐算法 加盐算法是一种用于增强密码安全性的技术。这种技术通过在密码存储过程中添加一个随机生成的盐值&…

uniapp移动端图片比较器组件,仿英伟达官网rtx光追图片比较器功能

组件下载地址&#xff1a;https://ext.dcloud.net.cn/plugin?id22609 已测试h5和微信小程序&#xff0c;理论支持全平台 亮点&#xff1a; 简单易用 使用js计算而不是resize属性&#xff0c;定制化程度更高 组件挂在后可播放指示线动画&#xff0c;提示用户可以拖拽比较图片…