C++读取文件核心是ifstream,需包含头文件并检查.open()成功与否;常用getline按行读取,>>适合格式规整数据;对象析构自动关闭文件,必要时可手动close。

用C++读取文件,核心是掌握ifstream(输入文件流)的用法。它属于头文件,本质是把磁盘上的文件“连”到程序里,像读普通输入一样逐行或逐字符处理。
打开文件前先检查是否成功
不能假设文件一定存在或路径一定正确。创建ifstream对象后,要用.is_open()或直接判断流状态:
ifstream fin("data.txt"); if (!fin) { cout- 常见失败原因:路径写错(比如少写了子目录)、文件被占用、权限不足、中文路径未用UTF-8或宽字符处理
按行读取最常用也最稳妥
用getline(fin, line)一次读一整行,自动丢掉换行符,不会因空格或制表符中断:
string line; while (getline(fin, line)) { cout- 注意:
getline返回的是流对象本身,非bool,但能隐式转为bool判断是否读到末尾或出错 - 如果文件最后一行没换行符,
getline仍能正常读取该行
读数字或单词可用重载的>>操作符
适合格式规整的文本,比如每行一个整数,或空格分隔的多个数值:
Perl 基础入门中文教程,chm格式,讲述PERL概述、简单变量、操作符、列表和数组变量、文件读写、模式匹配、控制结构、子程序、关联数组/哈希表、格式化输出、文件系统、引用、面向对象、包和模块等知识点。适合初学者阅读和了解Perl脚本语言。
立即学习“C++免费学习笔记(深入)”;
int x; while (fin >> x) { cout- 缺点:遇到非数字字符(如字母、逗号)会停止,并把错误字符留在缓冲区,后续读取可能出乱;空白符(空格、换行等)全被跳过,无法区分换行和空格
- 建议仅用于简单测试或已知格式干净的数据
别忘了关闭文件(或依赖自动析构)
ifstream对象离开作用域会自动关闭,一般不用手动调.close();但若需在中途清空缓冲、重用流对象,或想明确控制关闭时机,可调用:
-
fin.close();—— 关闭后再次>>或getline会失败 - 关闭后可重新用
.open("another.txt")打开别的文件
基本上就这些。不复杂,但容易忽略路径和错误检查,实际写代码时多加两行判断,能省下大半调试时间。







