c/c++语言开发共享C++ 文件输入输出

文件输入输出 文件写入: 准备: 包含 fstream 。 fstream 定义了 ofstream 类。 指明 std 。 ofstream 对象使用 open() 、 close() 。 注意: 写入各种数据:ofsteam对象 << #include<fstream> using namesp …


文件输入输出

文件写入:

  1. 准备:

    • 包含 fstream 。
    • fstream 定义了 ofstream 类。
    • 指明 std 。
    • ofstream 对象使用 open() 、 close() 。
  2. 注意:

    • 写入各种数据: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 。
    • 如果文件不存在则文件打开失败。

检查文件是否成功打开:

  • 通常,除非在输入的文件名中包含路径,否则程序将在可执行文件所属的文件夹中查找(或者在相关的路径)。
  • 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/c++开发分享C++ 文件输入输出件的每行都以回车字符和换行符结尾;通常情况下,c++ 在读取文件时将这两个字符转换为换行符,并在写入文件时执行相反的转换。
  • 控制台输入的文件版本是文c/c++开发分享C++ 文件输入输出件,即每个字节都存储了一个字符编码的文件。并非所有的文件都是文c/c++开发分享C++ 文件输入输出件,例如,数据库和电子表格以数值格式(即二进制整数或浮点格式)来存储数值数据。另外,字处理文件中可能包含文本信息,但也可能包含用于描述格式、字体、打印机等的非文本数据。
  • 以上讨论的文件 i/o 相当于控制台 i/o ,因此仅适用于文c/c++开发分享C++ 文件输入输出件。

 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/600033.html

(0)
上一篇 2021年5月9日
下一篇 2021年5月9日

精彩推荐