c++如何读取和写入txt文件 使用fstream库实现文件操作【代码示例】


用fstream读写TXT文件需选对流类型并检查打开状态:ifstream逐行读取用getline(),ofstream写入可覆盖或追加,fstream同时读写需指定模式组合并注意seekg/seekp定位。

fstream 读写 TXT 文件,核心是选对流类型(ifstreamofstreamfstream),正确打开文件,并检查是否成功。

读取文本文件(逐行 or 逐词)

推荐用 std::ifstream,配合 std::getline() 逐行读取最稳妥,避免空格截断;若用 >> 运算符则按空白符分隔(空格、制表、换行都会切开)。

示例:读取并打印每行内容

#include 
#include 
#include 

int main() {
    std::ifstream fin("data.txt");
    if (!fin.is_open()) {
        std::cerr << "无法打开 data.txt\n";
        return 1;
    }

    std::string line;
    while (std::getline(fin, line)) {
        std::cout << line << '\n';
    }
    fin.close();
    return 0;
}

写入文本文件(覆盖 or 追加)

std::ofstream。默认是覆盖写入(std::ios::out);要追加,显式加上 std::ios::app 模式。

  • 覆盖写入:直接构造 ofstream("file.txt")
  • 追加写入:ofstream("file.txt", std::ios::app)
  • 写入失败时,可用 !foutfout.fail() 判断

示例:向文件追加两行

#include 
#include 

int main() {
    std::ofstream fout("log.txt", std::ios::app);
    if (!fout) {
        std::cerr << "无法打开 log.txt\n";
        return 1;
    }

    fout << "操作完成\n";
    fout << "时间:2024-06-15\n";
    fout.close();
    return 0;
}

同时读写一个文件(需谨慎)

std::fstream,但必须指定模式组合,例如:

  • std::fstream file("data.txt", std::ios::in | std::ios::out); —— 可读可写,文件必须存在
  • std::fstream file("data.txt", std::ios::in | std::ios::out | std::ios::trunc); —— 读写+清空原内容
  • std::fstream file("data.txt", std::ios::in | std::ios::out | std::ios::ate); —— 打开后定位到末尾

注意:读写切换时需调用 seekg()(读位置)或 seekp()(写位置),否则行为未定义。

常见问题与建议

  • 路径写错或文件权限不足会导致打开失败——务必检查 is_open() 或隐式转换为 bool
  • 中文路径在 Windows 下可能乱码,建议用 UTF-8 编码保存源文件,并考虑使用 _setmode(_fileno(stdin), _O_U16TEXT)(Windows 特有)或改用绝对路径测试
  • 不手动调用 .close() 也行,对象析构时会自动关闭,但显式关闭更清晰可控
  • 读取数字时,fin >> x 遇到非数字字符会停止,且留下剩余字符在缓冲区,后续 getline() 可能读到空行——可用 fin.ignore() 清理


# windows  # 编码  # app  # ai  # c++  # ios  # win  # stream  # 常见问题  # 隐式转换  # 运算符  # bool  # ofstream  # ifstream  # fstream  # 对象  # 文本文件  # 无法打开  # 转换为  # 也行  # 读到  # 两行  # 清空  # 自动关闭  # 时需  # 更清晰 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 网络优化76771 】 【 技术知识130152 】 【 IDC云计算60162 】 【 营销推广131313 】 【 AI优化88182 】 【 百度推广37138 】 【 网站推荐60173 】 【 精选阅读31334


相关推荐: php打包exe后无法读取环境变量_变量配置方法【教程】  Mac如何整理桌面文件_Mac使用堆栈功能一键整理  c++ reinterpret_cast怎么用 c++最危险的类型转换【详解】  php订单日志怎么导出excel_php导出订单日志到表格教程【教程】  Python 中将 ISO 8601 时间戳转换为日期并计算日期差值的完整教程  如何使用Golang开发简单的聊天室消息存储_Golang WebSocket数据持久化方法  VSC怎样在VSC中调试PHPAPI_接口调试技巧【详解】  c++ namespace命名空间用法_c++避免命名冲突  php中$this和::能混用吗_对象与静态作用域冲突解决【方法】  Win11怎么关闭自动更新 Win11永久关闭系统更新的有效方法【技巧】  Go 语言标准库为何不提供泛型 Contains 方法:设计哲学与类型系统约束  如何在Golang中验证模块完整性_Golanggo.sum校验与安全实践  C++如何编写函数模板?(泛型编程入门)  C++如何使用std::transform批量处理容器元素?(代码示例)  Win11怎么关闭系统提示音_Windows11声音方案设为无声教程  零基础学会Python自动化办公_高效处理Excel与PDF文档  如何优化Golang Web性能_Golang HTTP服务器性能提升方法  如何在Golang中使用container/heap实现堆_Golang container/heap最小堆方法  php本地部署后session无法保存_session存储路径与权限设置技巧【技巧】  Win11怎么禁用键盘自带键盘_Win11笔记本禁用内置键盘方法【教程】  Win10系统更新错误0x80240034怎么办 Win10更新错误解决法【方法】  win11 OneDrive怎么彻底关闭 Win11禁用并卸载OneDrive教程【分享】  如何解决Windows字体显示模糊的问题?(ClearType设置)  如何高效获取循环末次生成的 NumPy 数组最后一个元素(无需额外循环)  Win11怎么自动隐藏任务栏_Win11全屏显示设置【美化】  php中::能访问全局变量吗_全局作用域与类作用域区分【操作】  如何在Golang中定义接口_抽象方法和多态实现  php转exe用什么工具打包快_高效打包软件推荐【汇总】  c++ try_emplace用法_c++ map高效插入数据  Django 测试数据库表缺失与字段未创建问题的完整解决方案  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  Win11怎么卸载Photos应用_Win11卸载Photos应用方法【教程】  Win11怎么更改电脑密码_Windows 11修改本地账户密码【步骤】  MAC怎么使用表情符号面板_MAC Emoji快捷键调用与符号查找【方法】  C++如何使用std::optional?(处理可选值)  c++ atoi和atof函数用法_c++字符数组转数字  如何在 Go 项目开发中正确处理本地包导入与远程模块路径的一致性问题  如何在 Python 测试中动态配置 @backoff 装饰器的重试次数  c++的static关键字有什么用 静态变量和静态函数的应用场景【教程】  Win11怎么解压RAR文件 Win11自带解压功能使用方法  Win11怎么关闭粘滞键_彻底禁用Windows 11连按Shift粘滞键【步骤】  Python对象比较与排序_集合使用说明【指导】  微信短链接怎么还原php_用浏览器开发者工具抓包获取【方法】  c# F# 的 MailboxProcessor 和 C# 的 Actor 模型  Win10如何优化内存使用_Win10内存优化技巧【攻略】  php删除数据怎么清空表_truncate与delete区别及用法【汇总】  如何使用Golang处理静态文件缓存_提高页面加载速度  Python安全爬虫设计_IP代理池与验证码识别策略解析  Windows7怎么找回经典开始菜单_Windows7经典菜单找回步骤【方法】  PythonWeb前后端整合项目教程_FastAPIReact完整实例 

 2025-12-25

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

致胜网络推广营销网


致胜网络推广营销网

致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。

 915688610

 17370845950

 915688610@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.