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 ;
}