DEMYSTIFYING C++ I/O

笔记本微调大模型实战:QLoRA+LoRA双压缩技术详解 大语言模型微调已从服务器专属任务演进为消费级笔记本可承载的日常开发工作。其核心原理在于参数高效微调(PEFT)技术体系——通过LoRA实现低秩增量适配,以不到1%的参数更新量引导模型行为偏移;再叠加QLoRA的4-bit量化压缩,在保障MMLU等基准测试仅下降约1.2个百分点的前提下,将8B模型显存占用从16GB压至3GB以内。该技术组合显著提升了微调过程的工程可行性与部署灵活性,广泛适用于客服问答、合同分析、营销文案生成等垂直场景。本文聚焦于在RTX 4060/4070或Apple M系列设备上落地QLo 阅读详情

0.INDEX&INTRODUCING

 

ChaPTEr 13: DEMYSTIFYING C++ I/O  409
Using Streams  410
What Is a Stream, Anyway?  410
Stream Sources and Destinations  411
Output with Streams  411
Output Basics  412
Methods of Output Streams  412
Handling Output Errors  414
Output Manipulators  415
Input with Streams  417
Input Basics  417
Handling Input Errors 418
Input Methods  419
Input Manipulators  423
Input and Output with Objects  423
String Streams  425
File Streams  426
Text Mode versus Binary Mode  427
Jumping around with seek() and tell()  428
Linking Streams Together  430
Bidirectional I/O  431
Summary  432
Please note that all the code examples for this chapter are available as a part of this chapter’s
code download on the book’s website at  www.wrox.com/go/proc++4e  on the Download
Code tab.
A program’s fundamental job is to accept input and produce output. A program that produces
no output of any sort would not be very useful. All languages provide some mechanism for
I/O, either as a built-in part of the language or through an OS-specific API. A good I/O sys-
tem is both flexible and easy to use. Flexible I/O systems support input and output through a
variety of devices, such as files and the user console. They also support reading and writing of
different types of data. I/O is error-prone because data coming from a user can be incorrect or
the underlying file system or other data source can be inaccessible. Thus, a good I/O system is
also capable of handling error conditions.
If you are familiar with the C language, you have undoubtedly used  printf() and  scanf() .
As I/O mechanisms,  printf() and  scanf() are certainly flexible. Through escape codes and
variable placeholders, they can be customized to read in specially formatted data, or output
any value that the formatting codes permit, which is currently limited to integer/character val-
ues, floating point values, and strings. However,  printf() and  scanf() falter on other mea-
sures of good I/O systems. They do not handle errors particularly well, they are not flexible
enough to handle custom data types, and in an object-oriented language like C++, they are not
at all object oriented.

1.USING STREAMS

The stream metaphor takes a bit of getting used to. At first, streams may seem more complex than traditional C-style I/O, such as  printf() . In reality, they seem complicated initially only because there is a deeper metaphor behind streams than there is behind  printf() . Don’t worry, though; after a few examples, you’ll never look back.

1.1 What Is a Stream, Anyway?

Chapter 1 compares the  cout stream to a laundry chute for data. You throw some variables
down the stream, and they are written to the user’s screen, or console. More generally, 
all streams can be viewed as data chutes. Streams vary in their direction and their 
associated source or destination. For example, the  cout stream that you are already 
familiar with is an output stream, so its direction is “out.” It writes data to the 
console so its associated destination is “console.” The  c in cout does not stand for 
“console” as you might expect, but stands for “character” as it’s a character-based 
stream. There is another standard stream called  cin that accepts input from the user.
Its direction is “in,” and its associated source is “console.” As with  cout , the  c 
in  cin stands for “character.” Both  cout and  cin are predefined instances of streams 
that are defined within the  std namespace in C++. The following table gives a brief 
description of all predefined streams.


The difference between buffered and unbuffered streams is that a buffered stream does 
not immediately send the data to the destination, but instead, it buffers incoming data 
and then sends it in blocks. An unbuffered stream, on the other hand, immediately sends 
the data to the destination.Buffering is usually done to improve performance, as certain 
destinations, such as files, perform better when writing bigger blocks at once. Note 
that you can always force a buffered stream to send all its currently buffered data to 
the destination by flushing its buffer using the  flush() method.

matlab内读取文件目录时斜杠和反斜杠的使用 @matlab内读取文件目录时斜杠和反斜杠的使用TOC matlab内读取文件目录时,斜杠和反斜杠的使用 最近被斜杠和反斜杠弄晕了,于是总结了一下,在此和大家分享一下。 代码 clear; clc; close all; I1= imread('..\zs1.jpg'); %和代码文件夹同目录的图片 (纯反斜杠) I2= imread('../zs2/zs2.j... 阅读详情

相关推荐

RPG MV游戏数据修改指南:从JSON解析到脚本进阶

游戏数据修改是游戏开发与逆向工程中的常见实践,其核心原理在于解析和操作游戏资源文件。许多现代游戏引擎采用结构化数据格式(如JSON)存储游戏配置,这为外部修改提供了可能。通过理解文件结构、数据格式与游戏逻辑的关联,开发者或爱好者可以调整游戏平衡、修复问题或实现个性化定制,这不仅能深化对游戏设计机制的理解,也具备实际的技术学习价值。本文以基于Web技术栈的RPG Maker MV(RPG MV)引擎为例,其游戏数据多以明文JSON存储,结构清晰。文章将具体阐述如何安全地修改角色属性、物品效果、敌人数据及技能公

weixin_29001419的博客 407

LLM驱动的信息抽取:从规则引擎到语义理解的范式升级

信息抽取(IE)是将非结构化文本转化为结构化数据的关键NLP任务,其本质在于精准定位并提取预定义语义字段。传统方法依赖正则表达式与人工规则,严重受限于文本格式变化与语义歧义;而大语言模型(LLM)凭借上下文感知的语义消歧能力、零样本泛化能力及结构化输出可控性,实现了从‘匹配字符’到‘理解句义’的根本跃迁。技术价值体现在降低规则维护成本、提升跨文档泛化鲁棒性,并支持业务人员通过自然语言schema直接定义需求。典型应用场景涵盖金融合同解析、法律文书要素提取、HR简历结构化等高价值领域。本文聚焦LLM时代信息抽

chuchen7021的博客 347

从稳压管到LDO芯片:一张图看懂线性电源的‘内卷’进化史

本文追溯了从稳压管到LDO芯片的线性电源技术进化历程,详细解析了各阶段的技术突破与局限。重点探讨了现代LDO在超低功耗、高精度控制等方面的创新,并提供了实战选型的黄金法则,帮助工程师在电子设备小型化与低功耗化趋势中做出最优选择。

weixin_42525551的博客 206

CppCon 2025 学习:Beyond the Big Green Button Demystifying the Embedded Build Process

C/C++ 编译不是一步,而是一条流水线人类代码→ 预处理(文本)→ 编译(机器码)→ 链接(地址 & 布局)→ 固件文件→ 写入硬件int main()\n";return 0;预处理是最原始、最危险、也最强大的阶段它不“理解” C++它只会无情地替换文本所有错误都会被放大到后续阶段理解预处理 = 理解 C/C++ 编译链的第一块基石告诉编译器:“这就是函数的具体实现请为它生成机器码。表达式错误语句错误作用域错误类型错误int x = 5;

虾球 812

使用 Mid360 从零开始搭建实物机器人入门级导航系统 —— 基于 Fast_Lio 和 Move_Base

本文详细介绍了如何使用Mid360机器人从零开始搭建一个基于Fast_Lio和Move_Base的入门级导航系统。通过配置 ROS2、集成激光雷达、IMU、Fast_Lio、Move_Base 等模块,我们成功构建了一个能够实现自动导航的机器人系统。在实际开发中,随着需求的变化,你可以不断调整参数、优化路径规划算法、增加新的传感器等,逐步提升机器人的智能与功能。

小蜗牛的珍贵百宝箱 3567

告别抓瞎!手把手教你用Keysight Infinium和M8040完成PCIe 5.0 TX/RX信号完整性测试

本文详细介绍了如何使用Keysight Infinium示波器和M8040误码仪完成PCIe 5.0 TX/RX信号完整性测试。从测试前的设备准备、软件配置到具体的TX信号测试步骤和RX容限测试实战,提供了全面的操作指南和常见问题解决方案,帮助工程师高效完成PCIe 5.0合规性测试。

weixin_30911451的博客 503

Demystifying printing with the Microsoft WebBrowser control and ShowHTMLDialogEx(可能的IE打印解决方案)...

copy from http://marc.durdin.net/2011/07/demystifying-printing-with-microsoft.html Demystifying printing with the Microsoft WebBrowser control and ShowHTMLDialogEx I'm writing up these n...

weixin_30301449的博客 193

别再只跑Demo了!用MovieLens数据集完整复现一个电影推荐系统(Python/Pandas实战)

本文详细介绍了如何利用MovieLens数据集从零构建一个完整的电影推荐系统,涵盖数据清洗、特征工程、推荐算法实现(协同过滤和矩阵分解)以及Web服务部署的全流程。通过Python和Pandas实战,读者可以掌握推荐系统的核心技术和生产环境部署技巧,不再局限于简单的Demo运行。

weixin_29062865的博客 150

基于Python的开源人脸识别库 离线识别率高达99 38

基于Python的开源人脸识别库 离线识别率高达99 38

qq_44995858的博客 234

PyTorch 深度学习实战(28):对比学习(Contrastive Learning)与自监督表示学习

本文实现了基于对比学习的自监督表征学习框架,通过 InfoNCE 损失在 CIFAR-10 数据集上学习到具有判别性的特征表示。实验表明,仅使用线性分类器即可达到 82% 以上的验证准确率,证明了对比学习的有效性。在下一篇文章中,我们将深入计算机视觉的核心任务之一——《目标检测与 YOLO 实战》,探讨如何利用深度学习实现高效的目标检测系统。

m0_60414444的博客 2385

word 2013 长篇文档排版案例教程

office 2013 制作长文格式模板

1万+

CUTLASS 1.3.3中的 Volta884_h884gemm

CUTLASS 是 CUDA C++ 模板抽象的集合,用于在 CUDA 内的所有级别和规模上实现高性能矩阵-矩阵乘法 (GEMM) 和相关计算。它采用了类似于 cuBLAS 和 cuDNN 中实现的分层分解和数据移动策略。 CUTLASS 最新版本为3.3,相比1.3.3变动较大。然而重温一下1.3.3仍然是有意义的。因为它更易于理解: 与 PROGRAMMING TENSOR CORES: NATIVE VOLTA TENSOR CORES WITH CUTLASS 中介绍的内容相匹配;

yiran103的专栏 923

硬件工程师笔记——电子器件汇总大全

本文系统总结了14种常用电子器件的工作原理及功能应用,包括电阻、压敏电阻、电容、电感、二极管、三极管、MOS管、晶振、光耦、IGBT、继电器、磁珠、可控硅和线性稳压器。每种器件从结构原理、工作特性到典型应用进行全面解析,如电阻的限流分压、电容的储能滤波、三极管的放大开关等。重点阐述了各器件在电路设计中的关键作用,如IGBT的功率控制、继电器的隔离保护、LDO的电压稳定等,并提供了实际电路应用案例。文章还整理了硬件工程师笔试面试相关的知识点和真题资源,为电子工程师提供全面的技术参考。

XU157303764的博客 2万+

[Share]历年 JOLT 获奖书籍(下载)

1991 Annotated C++ Reference Manual. by Margaret Ellis, Bjarne Stroustrup The Art of Human-Computer Interface Design. by Brenda Laurel Programming Windows, 2nd Edition by Charles Petzold ...

weixin_33720452的博客 169

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Be Flying工作室翻译的重点、重量级图书

      程序设计、软件工程、项目管理: 1. Software Estimation: Demystifying the Black Art中文名:软件估算--“黑匣子”揭秘 2. Antipatterns: Refactoring Software, Architectures, and Projects in Crisis中文名:反模式:危机中软件、架构和项目的重构 3. Java(TM)

软件开发资料汇总 352

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

全文 - Building AI Coding Agents for the Terminal: Scaffolding, Harness, Context Engineering, and Less

AI 编程辅助的格局正在经历一场根本性转变:从复杂的 IDE 插件转向通用的、终端原生的智能体(agent)。直接在开发者管理源代码版本控制、执行构建和部署环境的终端中运行,基于 CLI 的智能体为长程开发任务提供了前所未有的自主性。本文介绍OpenDev——一个专为这一新范式打造的开源命令行编程智能体。有效的自主辅助需要严格的安全控制和高效的上下文管理,以防止上下文膨胀和推理退化。

eloudy的专栏 455

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

InnoDB 内存结构总览:Change Buffer、AHI 与 Log Buffer

本文系统梳理InnoDB内存结构中的ChangeBuffer、Adaptive Hash Index(AHI)与LogBuffer。ChangeBuffer缓存二级索引页不在内存时的变更,减少随机IO,仅在页加载时合并;聚簇索引修改立即执行,因数据本身不可延后。AHI基于高频等值查询自动构建哈希索引,加速定位,仅支持等值操作。LogBuffer为redo log内存缓冲,配合磁盘日志实现崩溃恢复。三者均服务于性能优化,其中ChangeBuffer与AHI共享BufferPool空间,而LogBuffer独立

bksczm的博客 293

V8 机制、手写核心函数与 TypeScript 类型体操

或固定初始化(如数组先定长、对象先给全字段)保持类型与形状稳定;这些都比"换框架"更基础。只能处理纯数据(丢函数、Date、RegExp、循环引用报错)。生产级深拷贝要处理:原始值短路、循环引用、V8(Chrome / Node 的 JS 引擎)不是"解释一行跑一行"那么简单,它用。图:V8 执行流程——解释执行 + 热点优化,优化失败会 Deopt 回退。JS 内存自动管理,但"自动"不等于"不会漏"。是"固定间隔最多执行一次"。手写 Promise 是"懂异步"的试金石。是"停下后才执行最后一次",

qq_38468358的博客 350

Spring Boot 数据源与 MyBatis(-Plus) 自定义配置详解

本文详解 Spring Boot 中单数据源环境下 HikariCP 与 MyBatis-Plus 的自定义配置。通过手动声明 SqlSessionFactory,实现下划线转驼峰、日志输出、一级缓存策略等精细化控制。结合 HikariCP 核心参数调优(如最大连接数、连接生命周期),确保高性能与稳定性。适用于仅需访问单一数据库的场景,避免多数据源复杂性,兼顾性能与可维护性。

BADAO_LIUMANG_QIZHI的博客 209

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

要努力去发光,而不是被照亮~ 148

LeetCode Hot 100 二叉树专题(二)3 题(Java)

本篇文章共 3 题:543. 二叉树的直径、102. 二叉树的层序遍历、108. 将有序数组转换为二叉搜索树。 每道题都统一按「① 题目分析 & 解题思路 → ② 常见解法(附代码)及讲解 → ③ 知识点总结」的顺序组织;代码使用 Java 编写,节点定义沿用 LeetCode 默认的 TreeNode。

2401_88612756的博客 369

【从零理解 Spring AI · 12】MCP 的两种角色:做客户端还是做服务端

上一篇讲了 MCP 的概念:标准协议、三大角色、M+N 替代 M×N。

nice_lcj520的博客 520

JDK 下载安装:装完 Java 提示「不是内部或外部命令」?环境变量没配

JDK 是写 Java 程序必须装的东西。它包含运行 Java 的虚拟机(JRE)和编译 Java 的编译器(javac)——装了它,能跑、.java文件能编译成可执行程序。免费,学习和小规模生产都不花钱。

科小怪的博客 641

Java 集合容器高频面试题全解:HashMap 树化阈值、1.7 死循环与 ConcurrentHashMap 演进(2026 招聘 JD 真题复盘)

HashMap 树化阈值 8 的泊松分布依据、退化阈值 6 的防抖设计、JDK 1.7 头插成环死循环的排查与修复、1.8 尾插后为何仍线程不安全、ConcurrentHashMap 放弃分段锁的原因与 ForwardingNode 协作扩容、computeIfAbsent 死锁陷阱、大集合找重复的场景题选型,附三层追问链自测。题目来源为 38 期公开招聘 JD 样本与字节、拼多多、建行、美团、快手公开面经。

蒙眼过河 414

java框架大全

java框架大全

qq_39326137的博客 185

Java 多态 学习笔记

多态是面向对象编程的重要特性,指同一操作作用于不同对象时产生不同行为。其核心在于“父类引用指向子类对象”,结合方法重写实现运行时动态绑定。多态使代码更灵活、可扩展,如用Person p = new Student();统一处理各类人员注册,无需修改调用逻辑。但多态无法直接调用子类特有方法,需通过instanceof判断并强制转换。编译时看左边(类型),运行时看右边(实际对象),实现解耦与维护便利。

AA_AA114514的博客 366
上一篇: Redis连接池
下一篇: 《C++高级编程》20.7 元组 Tuple
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值