回复
Linux/AP_Autosar/C++系列之 C++下的IO
无聊逛51
发布于 2023-11-9 12:01
浏览
0收藏
“ 一步一步走,日坤月累,2023走到最下面”
流的概念
C++语言实现数据的输入与输出定义了一个很大很大的类库。其中ios为基类。派生出来四个类
- istream
- ostream
- fstreambase
- strstreambase
具体什么样的呢?
ifstream: 输入文件流,用于从文件中读取信息
ofstream:输出文件流,用于创建文件并且向文件中写入信息
fstream: 顾名思义,实现了上面两个类的总和
所以使用的时候可以简单的
#include <fstream>
using namespace std;
打开,关闭,写入,读取
#include <fstream>
#include <iostream>
#include <string>
using namespace std;
int main(void)
{
char data[100];
ofstream outfile;
outfile.open("a.txt");
cout <<"write some data into a.txt"<<endl;
cin.getline(data, 100);
outfile<<data<<endl;
outfile.close();
cout <<"data is: "<<data<<endl;
ifstream infile;
infile.open("a.txt");
cout <<"read data from infile"<<endl;
infile>>data;
cout << data <<endl;
infile.close();
return 0;
}
结果呢:
root@iZ2vcb0v0htktk3gwslzh8Z:~/DoVehicle# g++ main.cpp -o main
root@iZ2vcb0v0htktk3gwslzh8Z:~/DoVehicle# ./main
write some data into a.txt
asdfgdsgfdsdg
data is: asdfgdsgfdsdg
read data from infile
asdfgdsgfdsdg
root@iZ2vcb0v0htktk3gwslzh8Z:~/DoVehicle#
输入的过程很简单
文件位置指针,读,写取文件数据块
函数
int fseek(FILE *fp, LONG offset, int origin)
这里可以看出来
- 文件
- 偏移多少
- 基是哪里
SEEK_SET :文件开始
SEEK_CUR: 文件当前
SEEK_END: 文件结尾
这里我们举个例子使用以下这个位置函数 新建一个文件a.txt 如下
#include "fstream"
#include "iostream"
using namespace std;
int main()
{
ifstream ifile;
ifile.open("a.txt");
ifile.seekg(-5,ifile.end);
char read_data[2];
ifile.read(read_data,2);
cout <<read_data<<endl;
ifile.close();
ofstream ofile;
ofile.open("a.txt",ios::app);
char write_data[2] = {'a','b'};
ofile.seekp(0,ofile.end);
ofile.write(write_data,2);
cout <<"data length: "<<ofile.tellp()<<endl;;
return 0;
}
root@iZ2vcb0v0htktk3gwslzh8Z:~/DoVehicle# g++ seek.cpp -o seek
root@iZ2vcb0v0htktk3gwslzh8Z:~/DoVehicle# g++ seek.cpp -o seek^C
root@iZ2vcb0v0htktk3gwslzh8Z:~/DoVehicle# ./seek
78
data length: 13
root@iZ2vcb0v0htktk3gwslzh8Z:~/DoVehicle#
看来问题并不大
其实这里的ifstream 和 ofstream
的in out 对应的是内存。in不是指 以输入模式打开文件,而是输出模式。
因为in 指示的 in memory 向内存写入。所以对于文件来说 是 输出的意思。
加个笔记
文章转载自公众号:汽车与基础软件
分类
已于2023-11-9 12:01:06修改
赞
收藏
回复
相关推荐