01功能之读写文件流操作(按行读取文件所有内容)

01功能之读写文件流操作

前言:
1)下面我们将讲如何将文件的内容使用C++方法读写文件。
为了以后重用方便。
2)文件最大一行字节是=1024。

1 读取文件全部1,可读取空格和换行符,但换行符读进buf时被自动转成’\0’。

string ReadFile1(string fileName) {

	/*
	open():
	参2代表打开方式:1)ios::in文件以输入打开;2)ios::out文件以输出到磁盘打开;还有其它方式等等。
	参3代表操作权限:0-普通文件打开访问 1-只读 2-隐含文件 3-系统文件。
	*/

	char buf[1024];                                     // 文本文件每行最大读取的字节数=1024
	string totalStr;
	memset(buf, 0, 1024);

	// 关联文件
	ifstream inFile;
	inFile.open(fileName);
	//inFile.open(fileName, ios::in | ios::app );       // 只给in方式打开失败了
	if (inFile.is_open() == false) {
		cout << "文件打开失败" << endl;
		return "";
		//return "";
	}

	// 读取文件
	while (inFile.eof() != true) {                      // eof()代表是否读到文件末尾
		inFile.getline(buf, 1024);                      // 可以读空格
		//fileIn.read(buf, sizeof(buf));                // 可以读空格
		UTF8ToGB(buf);
		cout << buf << endl; 
		//cout << strlen(buf) << endl;                  // 这里测试到buf读出来的\n被自动转成了'\0'(记住就好)
		totalStr.append(buf);
	}

	inFile.close();

	return totalStr;
}

2 读取文件全部,可读取空格和换行符,但换行符读进buf时被自动转成’\0’。注:两个getline()是不一样的,但用法差不多。

// 读取文件全部2 也可读取空格和换行符 但换行符被转成'\0'
void ReadFile2(string fileName)
{
	ifstream inFile;
	inFile.open(fileName);
	//infile.open(file, ios::in | ios::app);
	assert(inFile.is_open());

	string s;
	while (getline(inFile, s)){  // 返回输入流 只要流是正常返回就可以读取 否则说明读完
		UTF8ToGB(s.c_str());
		cout << s << endl;
	}
	inFile.close();
}

3 将字符串写入文件
这里我用的是输入流的做法,你也可以自己尝试用C++提供的Write相关函数。

// 将字符串写入文件
void WriteFile(string fileName,string s1) {

	//ofstream outFile(fileName,ios::ate); //写入方式为覆盖
	ofstream outFile(fileName, ios::app);  //写入方式为追加数据
	if (!outFile) {
		throw exception("打开文件失败");
	}

	outFile << s1;

	outFile.close();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值