C++ 文件读写 I/O

在《数据结构与算法分析 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>			// assert

using namespace std;

int main(){
	
	// 文件输入:
	cout<< "Enter file name: ";
	stringfileName;
	getline(cin, fileName);
	ifstream fin;				// fine input stream
	fin.open(fileName.data());	// If the stream is already associated with a file
	assert(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";
		else
			break;
	}
	
	// fout<< "test ....\n" ;  // 也可以使用硬编码的方式,多次使用fout输出到文件
	// fout<< "test ...." ;
	// fout<< "test ...." ;
	
	fout.close();
	
	return 0;
}


你可能感兴趣的:(数据结构,C++,文件读写)