C++读写txt文档

C++读写txt文档,第1张

/*
 :从已有文件读
 :向指定文件写
 : 打开文件供读写
*/
#include
void main()
{
	/*文件打开模式:
	 *ios::in             只读
     *ios::out            只写
     *ios::app            从文件末尾开始写,防止丢失文件中原来就有的内容
     *ios::binary         二进制模式,缺省情况下是以文本方式打开
     *ios::trunc          打开一个文件,然后清空内容
     *ios::ate            打开一个文件时,将位置移动到文件尾
     *
     *ios::nocreate:     不建立文件,所以文件不存在时打开失败 //以下两种与编译器有关,在VC编译器下ios::_Nocreate
     *ios::noreplace:    不覆盖文件,所以打开文件时如果文件存在失败//在VC编译器下ios::_Noreplace
	*/

	//第一种打开文件方式
	ifstream ifile("data1.txt",ios::in);//从文件向外读取(只读),若没有该文件,则打开失败	
	//第二种打开文件方式
	/*void open(const char* filename,int mode,int access);
	*filename:要打开的文件名
    *mode:要打开文件的方式
    *access:打开文件的属性(0:普通文件,打开访问1:只读文件2:隐含文件4:系统文件),缺省为0
	*/
	//ifstream ifile;
	//ifile.open("data1.txt", ios::in);
	
	ofstream ofile("data2.txt", ios::out);//向文件中写入数据(只写),若没有该文件,则默认创建该文件
	//ofstream ofile("data2.txt", ios::out|ios::app);//从文件末尾开始追加写数据,若没有该文件,则默认创建该文件
	
	//这里的txt文档在当前程序文件所在目录可以直接像上面那样打开,否则需要使用相对路径或绝对路径指明文件位置
	//ifstream ifile("../data1.txt",ios::in);//相对路径指明文档在当前程序文件所在目录的上一级目录
	//ifstream ifile("D:/test/data1.txt",ios::in);//绝对路径指明文档在当前程序文件所在目录的上一级目录
	
	if (!ifile.is_open()) {
		class="superseo">cout << "data1.txt文件打开失败!" << endl;
	}
	if (!ofile.is_open()) {
		cout << "data2.txt文件打开失败!" << endl;
	}

	char readbuf[2000];
	int line = 1;
	memset(readbuf, 0, sizeof(readbuf));

	//第一种读方式
	while (ifile >> readbuf) {//这里使用标准库中的>>运算符,按换行符读取(碰到换行符就跳过并暂停读取),并自动忽略空白行(前提是缓存区readbuf足够)
		cout <<line++<<": "<< readbuf<<endl;//这里需要添加换行符
		//将读取内容写入新文件
		ofile << readbuf << endl;//这里需要添加换行符(这里使用标准库中的<<运算符)
		memset(readbuf, 0, sizeof(readbuf));
	}

	//第二种读方式
	//while (ifile.getline(readbuf,sizeof(readbuf))) {//这里使用标准库中的getline()函数(碰到换行符就就跳过暂停读取),按换行符读取,不会忽略空白行(前提是缓存区readbuf足够)
	//	cout << line++ << ": " << readbuf << endl;//这里需要添加换行符
	//	ofile << readbuf << endl;//这里需要添加换行符
	//	memset(readbuf, 0, sizeof(readbuf));
	//}

	//第三种读方式
	//string str;
	//while (getline(ifile, str)) {//使用标准库中的getline()函数,按换行符读取(碰到换行符就跳过并暂停读取),不会忽略空白行
	//	cout << line++ << ": " << str << endl;//这里需要添加换行符
	//	ofile << str<
	//	memset(readbuf, 0, sizeof(readbuf));
	//}

	//第四种读方式
	//char c;
	//while ((c=ifile.get()) != EOF) {//使用标准库中的get()函数逐个读取文件的字符(会将换行符作为一个字符读取)
	//	cout << c;//这里不需要添加换行符
	//	ofile << c;//这里不需要添加换行符
	//}

	ifile.close();
	ofile.close();
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/993498.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存