C Programer  - 讨论区

标题:C++标准库 fstream 编程示例

2014年01月20日 星期一 17:02

C++标准库中的fstream提供了对于文件的读写操作方法,虽然此模块叫做fstream,但其也提供随机访问所必须的seek操作,功能完备,完全可以替代C语言标准库的stdio模块。

代码示例如下:

 

#include <iostream>
#include <fstream>
#include <string>
#include <array>

using namespace std;

int main() {
	
	fstream fs;
	fs.exceptions(std::fstream::badbit);
	fs.open("fstream.cpp",ios_base::in);
	if(fs.is_open()) {
		array<char,16> buf;
		while(!fs.eof()) {
			buf.fill(0);
			fs.read(buf.data(),15);
			cout << buf.data();
		}
		fs.close();
	}
	
	fstream fout("temp.txt",ios_base::out|ios_base::trunc);
	fout.exceptions(std::fstream::badbit);
	if(fout.is_open()) {
		fout << "Hello world" << endl;
		auto pos=fout.tellg();
		cout << "now pos: " << pos << endl;
		fout.seekg(6);
		pos=fout.tellg();
		cout << "now pos: " << pos << endl;
		fout << "WORLD" << endl;
		fout << "How are you?" << endl;
		array<char,5> str;
		str.fill('k');
		fout.write(str.data(),str.size());
		fout.put('x');
		fout.flush();
		fout.close();
	}
	
	fstream fin("temp.txt",ios_base::in);
	if(fin.is_open()) {
		fin.seekg(ios_base::beg);
		array<char,1024> line;
		while(!fin.eof()) {
			line.fill(0);
			fin.getline(line.data(),1023);
			cout << line.data() << endl;
		}
		fin.close();
	}
	return 0;
}

参考资料:

http://www.cplusplus.com/reference/fstream/fstream/

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号