菜鸟请教c++怎么改写文件指定内容

菜鸟请教c++怎么改写文件指定内容,第1张

1、<fstream>头文件

2、ofstream类读取文件指定内容,ifstream类修改文件内容。

3、<vector>头文件,<string>头文件,负责按行保存ifstream读入的数据。

4、示例代码:(这个程序是删除Ollydbg.ini文件中,[Settings]标记后的内容)

原结构为:

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

40

41

42

43

44

45

46

47

48

49

50

#include<string>

#include<fstream>

#include<vector>

#include<algorithm>

using namespace std

int main()

{

ifstream infile("E:\\Visual Studio 2012\\Projects\\Primer_V4\\Primer_V4\\Ollydbg.ini")

if(infile)

{

cout <<"Ollydbg.ini is open sucess." <<endl

}

else

{

cerr <<"Ollydbg.ini is fail." <<endl

return 0

}

string line

vector<string>lines

while(getline(infile,line),!infile.eof())

{

lines.push_back(line)

}

infile.clear()

infile.close()

vector<string>::iterator beginPos = find(lines.begin(),lines.end(),"Symbolic data path = ")

vector<string>::iterator endPos = find(lines.begin(),lines.end(),"[Settings]")

for(vector<string>::iterator it = beginPos+1it!=endPosit++)

{

it->erase(it->find_first_of(" "),string::npos)

}

ofstream outfile("E:\\Visual Studio 2012\\Projects\\Primer_V4\\Primer_V4\\Ollydbg_backup.ini")

if(outfile)

{

cout <<"Ollydbg_backup.ini is open sucess." <<endl

}

else

{

cerr <<"Ollydbg_backup.ini is fail." <<endl

return 0

}

for(vector<string>::iterator it=lines.begin()it!=lines.end()it++)

{

outfile <<*it <<endl

}

outfile.clear()

outfile.close()

return 0

}

c++中,vector作为容器,它的作用是:用来存放结构体struct类型的变量。以下是vector的具体用法:

工具/材料:电脑、c++编译器

1、首先构造一个int类型的空vector向量

2、可以看到vector的size为0。

3、接着构造了6个元素值为20的vector向量。

4、成功的构造了6个元素为20的向量。

5、同样也将对象复制给另一个vector对象。

6、以下就是程序运行结果了。

相关信息

C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。

C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计,因而C++就适应的问题规模而论,大小由之。

C++不仅拥有计算机高效运行的实用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的问题描述能力。

写了一部分,我认为把关键部分都实现了,剩下的你自己写吧。

#include <string>

#include <vector>

#include <algorithm>

#include <iostream>

#include <map>

#include <cassert>

using namespace std

typedef unsigned int uint

struct StaticsInfo

{

float max, min, ave

StaticsInfo(float _max, float _min, float _ave)

: max(_max), min(_min), ave(_ave)

{}

}

class Record

{

public:

uint id

string name

float chinese

float math

float english

static uint CHINESE

static uint MATH

static uint ENGLISH

bool operator== (Record other) { return id == other.id}

}

uint Record::CHINESE = (char*)&((Record*)0)->chinese - (char*)&((Record*)0)->id

uint Record::MATH = (char*)&((Record*)0)->math - (char*)&((Record*)0)->id

uint Record::ENGLISH = (char*)&((Record*)0)->english - (char*)&((Record*)0)->id

class Statics

class Table

{

public:

friend class Statics

public:

typedef map<uint, uint>IdMap

typedef IdMap::iterator Imit

public:

bool insert(Record&r)

{

assert(r.chinese >= 0 &&r.chinese <= 100)

if ( idMap.find(r.id) == idMap.end() )

{

Records.push_back(r)

idMap[r.id] = Records.size()-1

return true

}

return false

}

bool del(uint id)

{

Imit it = idMap.find(id)

if ( it != idMap.end() )

{

Records.erase(remove(Records.begin(), Records.end(), Records[it->first]))

idMap.erase(it)

return true

}

return false

}

Record* query(uint id)

{

Imit it = idMap.find(id)

if ( it != idMap.end() )

return &Records[it->first]

return 0

}

StaticsInfo staticsChinese()

StaticsInfo staticsMath()

StaticsInfo staticsEnglish()

private:

vector<Record>Records

map<uint, uint>idMap

}

class Statics

{

public:

Statics(Table* t, uint o) : table(t), offset(o) {}

StaticsInfo operator() ()

{

float max=0, min=100, ave=0, cur

float *beg = (float*)( (char*)&(table->Records[0]) + offset )

for (int i=0i<table->Records.size()++i)

{

cur = *(float*)((Record*)(beg)+i)

if ( max <cur )

max = cur

else if (min >cur)

min = cur

ave += cur

}

ave /= table->Records.size()

return StaticsInfo(max, min, ave)

}

private:

Table* table

uint offset

}

StaticsInfo Table::staticsChinese()

{

return Statics(this, Record::CHINESE)()

}

StaticsInfo Table::staticsMath()

{

return Statics(this, Record::CHINESE)()

}

StaticsInfo Table::staticsEnglish()

{

return Statics(this, Record::CHINESE)()

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11309551.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存