C++文件读写

最近做课设,需要从文件中读取数据,存储到结构体;大一没有认真学C++。。。 在此记录下C++对文件读写的操作

路径问题

filename = 'C:/test/test.txt'

filename = 'C:\\test\\test.txt'

方式:

#include <fstream>  
ofstream         //文件写操作 内存写入存储设备   
ifstream         //文件读操作,存储设备读区到内存中  
fstream          //读写操作 

打开文件

可以用open()打开文件;也可以直接使用流对象

打开文件的方式在ios类(所以流式I/O的基类)中定义,有如下几种方式:

ios::in    为输入(读)而打开文件
ios::out    为输出(写)而打开文件
ios::ate    初始位置:文件尾
ios::app    所有输出附加在文件末尾
ios::trunc    如果文件已存在则先删除该文件
ios::binary    二进制方式

关闭文件

close()

将数据读取到结构体中

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

#define MAX_NUM 20
struct
{
string num; //编号
string name; //名称
int price; //单价
int count; //销售数量
int sale; //销售额
}medicine[MAX_NUM];

int main()
{
int n = 0;
ifstream in("C:\\Users\\腾飞\\Desktop\\info.txt", ios::in); //以读取方式打开文件
if (!in.is_open())
{
cout << "Error" << endl;
return -1;
}
while (!in.eof() && n < MAX_NUM) //eof:到达文件末尾返回true
{
in >> medicine[n].num >> medicine[n].name >> medicine[n].price >> medicine[n].count >> medicine[n].sale; //从文件输入数值到结构体
//若要从结构体写入文件,则需用ofstream(或fstream)打开,然后操作符用 << 即可
n++;
}

for (int i = 0; i < n; ++i)
{
cout << medicine[i].num << " " << medicine[i].name << " " << medicine[i].price << " " << medicine[i].count << " " << medicine[i].sale << endl;
}
in.close();
system("pause");
return 0;
}

txt文件:

程序运行结果:

参考:

C++文件读写详解

其他

做课设时,有个问题是修改图的路径,开始用数组的方法,不过修改不成功;后来想到了将数据文件读取到结构体的方法,修改时只需修改结构体,然后写入到原文件,再读取原文件,这样即完成了修改