C++ I/O流


basic_streambuf 	提供基本的缓存处理功能,其它I/O模板类,是它的友元类,利用它提供的底层读写功能。
ios_base 			提供基本的读写格式设置,读写状态和错误检测功能,是一个非模板类。
basic_ios 			提供基本的字符数据输入输出处理。
basic_istream / basic_ostream 提供确切的数据流读写功能


read/write读写结构体

struct Student
{
	char cName[10];
	int iAge;
};

int _tmain(int argc, _TCHAR* argv[])
{
	Student st = {0};
	strcpy_s(st.cName,"aaa");
	st.iAge = 100;

	//写文件
	ofstream wFileStream ;
	wFileStream.open("F:\\abc.txt", ios::out) ;
	if (!wFileStream)
	{
		cout << "打开文件失败" << endl;
		return 1 ;
	}
	wFileStream.write(reinterpret_cast<char *>(&st), sizeof(Student));
	wFileStream.close();

	//读文件
	Student st2 = {0} ;
	ifstream rFileStream ;
	rFileStream.open("F:\\abc.txt", ios::in) ;
	if (!rFileStream)
	{
		cout << "文件打开失败" << endl ;
		return 1 ;
	}
	rFileStream.read(reinterpret_cast(&st2), sizeof(Student)) ;
	cout << st2.cName << endl ;
	cout << st2.iAge << endl ;

	return 0;
}


getline读文件

int _tmain(int argc, _TCHAR* argv[])
{
	ifstream rFileStream ;
	rFileStream.open("F:\\abc.txt", ios::in) ;
	if (!rFileStream)
	{
		cout << "文件打开失败" << endl ;
		return 1 ;
	}

	char cTemp[100];
	
	while(!rFileStream.eof())
	{
		rFileStream.getline(cTemp, 100);
		cout << cTemp << endl ;
	}
	rFileStream.close();
	return 0 ;
}

文件指针的移动

int _tmain(int argc, _TCHAR* argv[])
{
	fstream rwFileStream ;
	rwFileStream.open("abc.txt", ios::in | ios::out | ios::binary | ios::trunc) ;
	if (!rwFileStream)
	{
		cout << " 文件打开失败";
		return 1 ;
	}

	for (int i=0; i<26; i++)
	{
		rwFileStream << static_cast<char>('a' + i);
	}

	char c ;
	rwFileStream.seekg(3, ios::beg) ;
	rwFileStream.get(c);
	cout << c << endl ;

	rwFileStream.seekg(0, ios::end);
	int iFileSize = rwFileStream.tellg() ;
	cout << "文件的大小为" <<  iFileSize << endl ;
	rwFileStream.close();
	return 0 ;
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值