在程序开发中,IO处理无处不在,经常会在代码中遇到特殊的IO处理需求
1、描述
需求:如果文件不存在则创建,存在则打开,然后先读取文件的末行,然后在文件末尾写入。
代码:
#include <iostream>
#include <fstream>
#include <string> using namespace std; int main(int argc, char **argv)
{
fstream fst;
string strTemp;
fst.open("test3", ios::in | ios::out);
//fst.seekp(0, fstream::beg);
while (!fst.eof())
{
getline(fst, strTemp);
cout << strTemp << endl;
}
cout << strTemp; fst.seekg(, fstream::end);
fst << "\nhhfdsfds";
fst.close();
return ;
}
因为fstream对象是作为读写同时打开的,在读和写转换之间,会使流失效,这个具体还要去参考《标准C++输入输出流与本地化》这本书。
2、ios::ate/ios::app的区别
ios::ate是使文件打开时将文件读取位置移动到文件尾
ios::app是打开文件并在文件尾部添加数据
3、seekp/seekg的区别
seekp是指设置输入流的文件读取位置,对应读取输入流的文件读取位置为tellp
seekg是指设置输出流的文件插入位置,对应读取输出流的文件插入位置为tellg