C++ 文件读写 I/O

来源:互联网 发布:爱奇艺视频for mac版 编辑:程序博客网 时间:2024/05/08 22:13

在《数据结构与算法分析 C++描述》一书中,写到:

对文件I/O来说,如果一个程序要从一个文件中获取输入或要输出到一个文件中,它必须为此目的创建一个流。

这个操作被称为打开一个到文件的流。

一个要读取某个文件的程序必须打开到这个文件的ifstream,而一个要写某个文件的程序必须打开到这个文件的ofstream。

fstream既可以用于从文件中读取,也可以用于向文件中写入。需要加入fstream库声明。


fstream inoutStream

inoutStream.open(ioFileName.data(), ios::in | ios::out);        // 既可以用于输入,也可以用于输出

open()具有破坏性,使用iso::app可以保留输出文本内容,并且以追加的形式放到文件末尾。如:

outstream.open(outFileName.data(), ios::app);

#inlcude<iostream>                                  // cin, cout#include <fstream>                                  // ifstream ,ofstream#include<string>                                    // string ,getline()#include<cassert>                                   //  assert()using namespace std;int main(){cout << "Enter the name of the input file: ";string inputFileName;getline(cin, inputFileName);                        //  获取输入文件的名字ifstream fin;                                       // 打开一个到输入文件fin.open(inputFileName.data());                     //  的输入 流,建立相关assert( fin.is_open());                             // 联系并检查是否成功   //  要记住:无论何时都要记住使用is_open()来检测一个打开流的尝试是否成功。 true /  false;//  文件流使得这个对象成为一个程序和文件之间的联系。for(;;)                                             // 循环{     fin >>   $$$$$$$$;                             // 读取内容     if(fin.eof())  break;                          // 如果eof, end of file 则推出}                                                   // 循环结束                                                                                            fin.close();                                        // 关闭联系,断开文件流到文件的联系return 0;}
完整示例文件:

#include<iostream>// cin, cout#include<fstream>// ifstream ,ofstream#include<string>// file name#include<cassert>// assertusing namespace std;int main(){// 文件输入:cout<< "Enter file name: ";stringfileName;getline(cin, fileName);ifstream fin;// fine input streamfin.open(fileName.data());// If the stream is already associated with a fileassert(fin.is_open());// (i.e., it is already open), calling this function fails.cout<< "file is open";string content;while(!fin.eof()){fin>>content;cout<<content<<"\n";}fin.close();// 文件输出:cout<< "Enter file name: ";stringofileName;getline(cin, ofileName);ofstreamfout;fout.open(ofileName.data());assert(fout.is_open());cout<< "file is open\n";string content1;while(true){getline(cin,content1,'\n');if(content1[0]!= ' ')  // 当读入的首个字符为空格时,停止输入fout<< content1<<"\n";elsebreak;}// fout<< "test ....\n" ;  // 也可以使用硬编码的方式,多次使用fout输出到文件// fout<< "test ...." ;// fout<< "test ...." ;fout.close();return 0;}


0 1
原创粉丝点击