跳到主要内容
极客日志极客日志
首页博客AI提示词GitHub精选代理工具
搜索
|注册
博客列表
C++算法

C++类型转换与 IO 流详解

C++ 类型转换提供四种命名操作符:static_cast 用于静态转换,reinterpret_cast 用于位模式重解释,const_cast 用于去除 const 属性,dynamic_cast 用于多态下的父子类转换。IO 流体系包含 istream、ostream、fstream 及 stringstream,分别支持控制台、文件及字符串数据的输入输出。掌握这些机制可提升代码安全性与扩展性,避免隐式转换错误及野指针风险。

1951018925发布于 2026/3/22更新于 2026/5/78 浏览
C++类型转换与 IO 流详解

C++ 的类型转换

C 语言的类型转换包含隐式类型转换和强制类型转换,但可视性较差,容易引发逻辑错误。C++ 引入了四种命名的强制类型转换操作符,以增强类型转换的可视性和可控性:static_cast、reinterpret_cast、const_cast 和 dynamic_cast。

四种命名的强制类型转换操作符

static_cast

用于非多态类型的转换(静态转换)。编译器隐式执行的任何类型转换均可使用,但不能用于两个不相关的类型进行转换。

reinterpret_cast

用于不同类型之间的底层位模式重解释转换。

const_cast

用于删除变量的 const 属性。注意:修改 const 对象可能导致未定义行为,编译器可能会优化掉对内存的访问。此时可使用 volatile 确保每次访问内存。

dynamic_cast

用于将一个父类对象的指针或引用转换为子类对象的指针或引用(动态转换)。

  1. 仅适用于父类含有虚函数的类。
  2. 会检查转换是否成功,成功则返回目标指针,失败则返回空指针。
  3. 子类转父类无需 dynamic_cast,使用 static_cast 即可;父类转子类建议使用 dynamic_cast 以确保安全。

RTTI (运行时类型识别)

C++ 支持 RTTI 的方式包括:

  1. typeid 运算符
  2. dynamic_cast 运算符
  3. decltype

C++ 的 IO 流

IO 流体系涵盖输入输出功能:

  • istream:输入流
  • ostream:输出流
  • iostream:输入输出流

C++ 兼容 C 语言 IO 函数(如 fprintf, fscanf),但对于自定义类型,推荐使用 cin 和 cout 以支持重载。

程序持续要求输入时,可通过 Ctrl+Z 终止输入,Ctrl+C 亦可终止进程。

ios 流提供了 operator bool() 成员函数来判断输入输出流的状态。

C++ 文件的 IO 流

C 语言文件 IO 在 C++ 中同样可用,C++ 提供了更面向对象的文件流类:

  • ifstream:专门用于从文件中读取数据。
  • ofstream:专门用于向文件中写入数据。
  • fstream:结合读写功能,允许对同一文件进行读写操作。

示例用法:

ifstream ifs("text.txt", ios_base::in | ios_base::binary);
ifs.read((char*)&info, sizeof(info)); 
ifs >> info; 
// 读二进制
// 读文本

注意:二进制读写不能直接使用 string 或 vector 等对象存储数据,否则可能涉及指针问题导致野指针风险。

stringstream

主要用于数据与字符串之间的转换及序列化/反序列化结构数据。

目录

  1. C++ 的类型转换
  2. 四种命名的强制类型转换操作符
  3. static_cast
  4. reinterpret_cast
  5. const_cast
  6. dynamic_cast
  7. RTTI (运行时类型识别)
  8. C++ 的 IO 流
  9. C++ 文件的 IO 流
  10. stringstream
  • 💰 8折买阿里云服务器限时8折了解详情
  • GPT-5.5 超高智商模型1元抵1刀ChatGPT中转购买
  • 代充Chatgpt Plus/pro 帐号了解详情
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 深入理解 Web Worker
  • VS Code 禁用 Copilot 自动补全,专注算法训练
  • Stable Diffusion 完整训练与推理流程详解(含伪代码)
  • Python Web UI 自动化测试:推送本地代码到 Git 远程仓库
  • 企业微信群机器人发送 Markdown 消息支持表格及艾特功能
  • 基于 AI 的智能算力调度与分配实践
  • ngrok 内网穿透工具详解:免费 HTTPS、本地开发与 Webhook 测试
  • Nginx 部署前端 Vue 项目指南
  • RT-Thread 二十周年开发者大会:开源基础软件与生产力进化
  • Python 依赖注入(DI)实战:三种实现方式、代价权衡与可测试性案例
  • MCP 插件配置实战:browser-tools-mcp 集成指南
  • Comfy-Photoshop-SD:ComfyUI与Photoshop AI绘画集成方案
  • 渐进式 AIGC 聚合系统:多模态生成与 Agent 工作流私有化部署方案
  • 大模型时代程序员如何提升核心竞争力与生产力
  • node-llama-cpp 跨平台安装与配置指南:Windows、Linux 和 Mac
  • Seedance 2.0 重构 AIGC 视频工作流:语义映射与热更新实战
  • 分治算法实战:从荷兰国旗到快速排序变体
  • OpenMAIC 技术深度解析:基于多智能体的沉浸式 AI 课堂
  • llama.cpp 性能基准测试:参数调优与多场景实战
  • OpenClaw 技能精选:为本地 AI 助手构建超级插件市场

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online