肥宅钓鱼网
当前位置: 首页 钓鱼百科

数据结构进栈与出栈的代码c语言(流类库继承体系)

时间:2023-07-11 作者: 小编 阅读量: 1 栏目名: 钓鱼百科

扩展streambuf在缓冲区提取和插入的管理filebuf:使用文件保存字符序列。

一、IO、流

数据的输入和输出(input/output简写为I/O)

对标准输入设备和标准输出设备的输入输出简称为标准I/O

对在外存磁盘上文件的输入输出简称为文件I/O

对内存中指定的字符串存储空间的输入输出简称为串I/O

数据输入输出的过程,可以形象地看成流

从流中获取数据的操作称为“提取”(输入)操作

向流中添加数据的操作称为“插入”(输出)操作

标准输入输出流

文件流

字符串流

二、流类库继承体系、四个输入输出对象

流库具有两个平行的基类:streambuf 和 ios 类,所有流类均以两者之一作为基类

streambuf 类提供对缓冲区的低级操作:设置缓冲区、对缓冲区指针操作区存/取字符

ios_base、ios 类记录流状态,支持对streambuf 的缓冲区输入/输出的格式化或非格式化转换

stringbuf:使用串保存字符序列。扩展 streambuf 在缓冲区提取和插入的管理

filebuf:使用文件保存字符序列。包括打开文件;读/写、查找字符

如下图:

C为用户进行标准I/O操作定义了四个类对象: cin,cout,cerr和clog

cin为istream流类的对象,代表标准输入设备键盘,后三个为ostream流类的对象

cout代表标准输出设备显示器

cerr和clog含义相同,均代表错误信息输出设备显示器

三、ostream流 的操作,istream 流的操作

(一)、ostream流 的操作:

1、operator <<

<<操作返回一个ostream对象的引用,所以可以连续使用

2、put( )

输出单个字符

返回一个ostream对象的引用

cout.put(‘H’).put(‘i’);

3、write( )

write(buf, len)

write( )返回一个ostream对象的引用

cout.write (buf, len) //char buf[len]

CCode

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

#include <iostream>

using namespace std;

int main(void)

{

int n = 100;

int n2 = 200;

cout << n << " " << n2 << endl;

cout.put('H');

cout.put('i');

cout.put(' ');

cout.put('H').put('i').put('\n');

char buf[] = "test!!!!!";

cout.write(buf, 5);

return 0;

}

(二)、istream流 的操作:

1、opeartor>>操作

<<操作返回一个ostream对象的引用,所以可以连续使用

2、get( )

get( )操作:

读取单个字符

返回一个整数

字符的ASCII码

get(char&)操作:

读取单个字符

返回一个istream对象的引用

3、getline( )

读取一行

遇到回车键

返回istream对象的引用

getline()操作与>>的区别:

char string1 [256],

cin.getline(string1, 256); //get a whole line, 以'\0'结尾

cin >> string1; //stop at the 1st blank space

4、read( )

read(buf, len)

返回一个istream对象的引用

对空白字符(包括'\n')照读不误

5、peek( ) 与 putpack()

peek:查看而不读取

putback:将一个字符添加到流

CCode

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

#include <iostream>

using namespace std;

int main(void)

{

//int n;

//char ch;

//cin>>n>>ch;

//cout<<"n="<<n<<" "<<"ch="<<ch<<endl;

//int ch = cin.get();

//cout<<ch<<endl;

//char ch1;

//char ch2;

//cin.get(ch1).get(ch2);

//cout<<ch1<<" "<<ch2<<endl;

char buf[10] = {0};

cin.getline(buf, 10);

cout << buf << endl;

//char buf[10] = {0};

//cin>>buf;

//cout<<buf<<endl;

//char buf[10] = {0};

//cin.read(buf, 5);

//cout<<buf<<endl;

/*char c[10], c2, c3;

c2 = cin.get( );

c3 = cin.get( );

cin.putback( c2 );

cin.getline( &c[0], 10);

cout << c << endl;*/

return 0;

}

二、字符串流的基本操作

istringstream,由istream派生而来,提供读string的功能

ostringstream,由ostream派生而来,提供写string的功能

stringstream,由iostream派生而来,提供读写string的功能

(一)、分割单词

CCode

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

#include <iostream>

#include <sstream>

using namespace std;

int main(void)

{

string line;

string word;

while (getline(cin, line))

{

istringstream iss(line);

while (iss >> word)

cout << word << "#";

cout << endl;

}

return 0;

}

(二)、字符串与double 类型互相转换

CCode

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

#include <iostream>

#include <sstream>

using namespace std;

string doubletostr(double val)

{

ostringstream oss;

oss << val;

return oss.str(); // return string copy of character array

}

double strtodouble(const string &str)

{

istringstream iss(str);

double val;

iss >> val;

return val;

}

int main(void)

{

double val = 55.55;

string str = doubletostr(val);

cout << str << endl;

str = "123.123";

val = strtodouble(str);

cout << val << endl;

return 0;

}

(三)、实现类似sscanf, sprinft 的功能

CCode

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

#include <iostream>

#include <sstream>

using namespace std;

int main(void)

{

//192,168,0,100;

//sscanf,sprintf;

//istringstream iss("192,168,0,100");

//int v1;

//int v2;

//int v3;

//int v4;

//char ch;

//iss>>v1>>ch>>v2>>ch>>v3>>ch>>v4;

//ch = '.';

//ostringstream oss;

//oss<<v1<<ch<<v2<<ch<<v3<<ch<<v4;

//cout<<oss.str()<<endl;

string buf("192,168,0,100");

stringstream ss(buf);

int v1;

int v2;

int v3;

int v4;

char ch;

ss >> v1 >> ch >> v2 >> ch >> v3 >> ch >> v4;

ch = '.';

stringstream ss2;

ss2 << v1 << ch << v2 << ch << v3 << ch << v4;

cout << ss2.str() << endl;

return 0;

}

输出为192.168.0.100

,
    推荐阅读
  • 养老保险是什么意思(养老保险简单介绍)

    接下来我们就一起去研究一下吧!养老保险是什么意思养老保险,全称社会基本养老保险,是国家和社会根据一定的法律和法规,为解决劳动者在达到国家规定的解除劳动义务的劳动年龄界限,或因年老丧失劳动能力退出劳动岗位后的基本生活而建立的一种社会保险制度。养老保险是社会保障制度的重要组成部分,是社会保险五大险种中最重要的险种之一。养老保险的目的是为保障老年人的基本生活需求,为其提供稳定可靠的生活来源。

  • 莴笋牛肉丸子汤的做法(莴笋牛肉丸子汤的做法分享)

    我们一起去了解并探讨一下这个问题吧!莴笋牛肉丸子汤的做法主料:牛肉丸6个、莴苣一根、青米椒各一个、红米椒适量。牛肉丸对切成片。青红米椒切圈,蒜切片。锅热倒入适量油加入蒜片爆香。放入青红椒翻炒几下。加入莴苣片继续翻炒至断生。加入盐鸡精调味后关火。

  • 2022年门窗十大品牌(2022门窗十大品牌排名有哪些)

    门窗十大名牌排名1、享裕安门窗享裕安门窗作为国内门窗行业品牌,一直以“诚信做好人,专注造门窗”的企业发展愿景开拓市场。享裕安门窗是高新技术企业,同时获得广东省质量管理创新奖和政府质量奖。门窗十大名牌排名3、墨瑟门窗墨瑟于2004年正式进入中国,并成为首家在全国范围内广泛推广节能门窗的品牌。更被中国门都网评选为2013年广东铝合金门窗十大品牌、广东省门业协会副会长单位及行业品牌冠军。

  • 那些说审车包过检测站可信吗(舒心车检到底哪里舒心)

    近日,我省正式推出“舒心车检”12项重点措施,着力解决广大群众在车检过程中遇到的“急难愁盼”问题,为群众提供更优质高效的车检服务。目前,经过改造升级,全市16家检测站各项便民措施已经全部落实到位。督促机动车检验机构合理制定收费标准,并在经营场所公示,接受社会监督。

  • 35岁以后才明白的人生真相(人生忠告十八岁后你应该这样活)

    不要对任何一件没有做过的事情说没意义。要学习,无论在何时何地。18岁了,可以爱物质,但要适当。18岁意味着成熟,成熟的人,做事说话要三思,不要草率。责任和义务时常与爱情同行。当你被朋友伤害的时候,别怀疑友情,原谅,但不要遗忘,你只需提防背叛过你的人,可以少一个朋友,但尽量不要多一个敌人。对朋友保持一点侠义之情。不要记恨,不管是对人还是对社会。不要在同一件事上犯两次错误……体之肤发,受之父母。

  • 橱柜锡纸能否揭掉(装橱柜切记铺一层锡纸)

    1、安装顺序一般来说,橱柜的安装顺序是地柜、吊柜,然后是水龙头、水槽、灶具,最后是电器。

  • 菜刀张小泉直播(菜刀江湖张小泉难称霸)

    王麻子打不开新市场,生产断断续续,业绩持续下滑,跌入了谷底。此举保住了招牌,但没有改善亏损。商标由北京栎昌王麻子工贸有限公司接收。2020年营收仅仅为10.65万元,净利润亏损27.89万元,负债总计1430.45万元。2020年,张小泉刀具自产产量达到了146.3万把,代工产量513.5万把,收入1.65亿。2020年“十八子作”品牌全网线上成交额达也突破了1.8亿元。2020年,王麻子出售商标。2021年,张小泉上市成功,成为“刀剪第一股”。

  • 公司地址怎么变更(公司变更地址的流程)

    根据我国法律规定,公司以其主要办事机构所在地为住所。办事机构所在地,即公司开展业务活动和处理公司事务的公司机构所在地。

  • 转行之前几年的工作经历如何写(分享几个转行容易的证书)

    据说,今年又有很多人失去了工作。HR的门槛证书,同时还有人才补贴,享受落户积分、个税抵扣、涨退休金等等福利。考试均达到60分视为考核合格。由于是新增的职业,目前社会上岗位竞争少,需求大。适合各类社区医院、学校卫生医疗机构、私人健康顾问等。人社第三方证书也是可领补贴的。报考条件:满18岁以上即可报考多个证书多个选择希望能对大家有所帮助,我们女生也要努力提升自己,让自己变得更优秀。

  • 防晒霜隔离霜bb霜该怎么用(隔离霜CC霜防晒霜)

    防晒霜是利用防晒粒子,在肌肤表面形成防护层,反射紫外线中可能对肌肤产生伤害的光波,达到保护肌肤的目的。防晒霜不具有任何润肤作用,所以,它是护肤的最后一步。所以,理所当然的,CC霜要涂在防晒霜之后,作为粉妆的第一层底色。