C++ 文件输入输出
2020-03-27 16:00:57来源:博客园 阅读 ()
C++ 文件输入输出
文件输入输出
文件写入:
-
准备:
- 包含 fstream 。
- fstream 定义了 ofstream 类。
- 指明 std 。
- ofstream 对象使用 open() 、 close() 。
-
注意:
- 写入各种数据:ofsteam对象 <<
#include<fstream> using namespace::std; ofsteam fout; fout.open(c_str); fout << data; fout.close();
注:向文件输入字符串时会同时输入结尾的空字符。
-
- 所有可用于 cout 的操作和方法都可用于 ofstream 对象。
- 如果文件不存在则新建,否则重建。
文件读入:
-
准备:
- 包含 fstream 。
- fsteam 定义了 ifstream 类。
- 指明 std 。
- ifstream 对象使用 open() 、 close() 。
-
注意:
- 读取各种数据:ifsteam 对象 >>
#include<fstream> using namespace::std; ifsteam fin; fin.open(c_str); fin >> ch; fin.close();
- 所有可用于 cin 的操作和方法都可用于 ifstream 对象。
- ifsteam 对象本身被用作测试条件时,如果最后一个读取操作成功,它将被转换为布尔值 true ,否则被转换为 false 。
- 如果文件不存在则文件打开失败。
- 读取各种数据:ifsteam 对象 >>
检查文件是否成功打开:
- 通常,除非在输入的文件名中包含路径,否则程序将在可执行文件所属的文件夹中查找(或者在相关的路径)。
- ifstream对象.is_open() 、 ofsteam对象.is_open() 。返回 true 、 false 。
inFile.open(str); if (!inFile.is_open()) { exit(EXIT_FAILURE); }
注:exit() 的原型在cstdlib 中定义,该头文件还定义了 EXIT_FAILURE 。
检查数据读入是否成功:
- 程序读取文件时不应超过 EOF 。
- 几个方法:
- eof () :如果最后一次读取数据时遇到 EOF ,方法 eof () 将返回 true 。
- fail () :如果最后一次读取操作中发生了类型不匹配的情况,方法 fail () 将返回 true (如果遇到了 EOF ,该方法也将返回 true )。
- bad () :可能出现意外的问题,如文件受损或硬件故障。如果最后一次读取文件时发生了这样的问题,方法 bad () 将返回 true。
- good () :该方法在没有发生任何错误时返回 true 。
- 程序中使用 good () 方法,然后,如果愿意,可以使用其它方法来确定循环终止的真正原因。
while (inFile.good()) //while input good and not at EOF { ... }
if (inFile.eof()) cout << "End of file reached.\n"; else if (inFile.fail () ) cout << "Input terminated by data mismatch.\n"; else cout << "Input terminated for unknown reason.\n";
- 方法 good () 指出最后一次读取输入的操作是否成功,这意味着应该在执行读取输入的操作后,立刻应用这种测试。一种标准方法是,在循环之前(首次执行循环测试前)放置一条输入语句,并在循环的末尾(下次执行循环测试之前)放置另一条输入语句:
// standard file-reading loop design inFile >> value; // get first value while (inFile.good()) { // loop body goes here inFile >> value; // get next value }
鉴于表达式 inFle >> value 的结果为 inFile ,而在需要一个 bool 值的情况下, inFile 的结果为 inFile.good() ,即 true 或 false ,代码可精简如下:
// abbreviated file-reading loop design // omit pre-loop input while (inFile << value) // read and test for success { // loop body goes here // omit end-of-loop input }
注意:
- Windows 文本文件的每行都以回车字符和换行符结尾;通常情况下,C++ 在读取文件时将这两个字符转换为换行符,并在写入文件时执行相反的转换。
- 控制台输入的文件版本是文本文件,即每个字节都存储了一个字符编码的文件。并非所有的文件都是文本文件,例如,数据库和电子表格以数值格式(即二进制整数或浮点格式)来存储数值数据。另外,字处理文件中可能包含文本信息,但也可能包含用于描述格式、字体、打印机等的非文本数据。
- 以上讨论的文件 I/O 相当于控制台 I/O ,因此仅适用于文本文件。
原文链接:https://www.cnblogs.com/suui90/p/12578760.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- C++ 转换函数搭配友元函数 2020-06-10
- C++ 自动转换和强制类型转换(用户自定义类类型) 2020-06-10
- C++ rand函数 2020-06-10
- C++ 友元函数 2020-06-10
- C++ 运算符重载 2020-06-10
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash