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

数据结构进栈与出栈的代码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

,
    推荐阅读
  • 标致5008费油吗?(标致5008耗油吗)

    根据用户实际油耗反馈,标致50081.6T车型综合平均油耗为9.7L/100km,1.8T车型为9.4L/100km。如果是几公里的短距离,由于车辆机械设计的特点,需要一段时间的运转才能达到最佳效率。每次车辆筋骨不动几公里,高油耗在所难免。一般在弯道多,急刹车频繁的路段油耗肯定会高很多。

  • 去黄抗皱美白面膜评测(吹嘘美白抗皱的面膜真有用吗)

    而自制面膜多是从动植物中直接取材,未添加抑菌剂,可能会有滋生细菌的风险。这些皮肤外层的角质层能抵挡细菌和有害物质入侵,同样也会把面膜中的精华液阻挡在外。除了细小成分,绝大部分精华液很难通过屏障渗入皮肤被吸收。

  • 炒胡萝卜片的做法(炒胡萝卜片怎么做)

    接下来我们就一起去了解一下吧!炒胡萝卜片的做法主料:胡萝卜300克。调料:大蒜10克、大葱5克、酱油20克、盐1克、白砂糖5克、味精1克、姜5克、植物油40克。将胡萝卜洗净,切去根蒂,斜成薄片。将葱白洗净,切成末。蒜头去皮,切成末;姜切末。炒锅置大火上烧热,倒入植物油,倒放胡萝卜片炒透,加入精盐、酱油、白糖,加少许水,盖上锅盖,烧至汤将近干时,放入姜末、葱末和蒜末炒透,加入味精,炒匀后盛入盘内即可。

  • 微信朋友圈怎么屏蔽所有人(微信朋友圈怎么屏蔽所有人只让一个人看)

    2、朋友圈点击进入“设置”选项后,在弹出的界面里选择“隐私”。

  • 宁德市是哪个省(宁德市的介绍)

    土地面积1.34万平方公里,直接相邻的海域面积4.46万平方公里,拥有世界级天然深水港三都澳。地形以丘陵山地为主,沿海为小平原,属中亚热带海洋性季风气候。截至2018年末,宁德市常住人口291万人。宁德也是中国东南沿海休闲度假和生态旅游的胜地,境内共有1个世界地质公园、2个5A级景区、3个国家级风景名胜区和7个省级风景名胜区。2019年11月15日,宁德市被授予“国家森林城市”称号。

  • 西域指的是哪里(西域的位置)

    以下内容希望对你有帮助!西域指的是哪里西域,中国汉朝时多指玉门关、阳关以西的诸多国家和地区,唐朝时称碛西。在丝绸之路影响下,西域被特指汉、唐两代中国政府安排的行政机构所管辖的今中国新疆大部及中亚部分地区,位于欧亚大陆中心,是丝绸之路的重要组成部分,其文化特征依然可见于现在新疆地区的遗址及中国敦煌的壁画。该地对东西方国家的贸易文化交流起到中转站的重要作用。

  • 泰安驾照异地转入如何办理 异地的驾照怎么转回来

    注意事项请用户务必认真阅读业务须知,知晓预选号牌号码有效期、信息录入要求以及其他内容。一旦用户用完自编选号机会,用户将不能再为当前车辆进行自编选号。用户预选号成功后,若未在预选号有效期内到车管所确认互联网预选号牌,用户将被加入黑名单,无法在互联网上预选机动车号牌,2年后自动解除黑名单。》》泰安异地转(迁)入预选号牌办理

  • 年龄的别称(年龄的别称是什么)

    下面内容希望能帮助到你,我们来一起看看吧!年龄的别称豆蔻是十三四岁至十五六岁。束发是男子十五岁。弱冠是男子二十岁。而立是男子三十岁。不惑是男子四十岁。知命是男子五十岁。鲐背之年指九十岁。

  • 襄阳高新区就业创业培训补贴能申请几次?

    每人每自然年度只能享受一次职业培训补贴,不得重复申请。补贴标准(一)就业技能培训补贴标准为200元-2000元/人,如:育婴师(月嫂)、营养配餐员等培训时间120个课时补贴标准为1000元,家政服务员等培训时间90个课时补贴标准为1000元。其中,对培训后取得相应职业资格证书或专项职业能力证书的,按补贴标准的100%给予补贴;只取得培训合格证书的,按80%给予补贴。(二)创业培训补贴标准按照培训课程分为一次性300元/人或1200元/人。

  • 梦到厕所很脏(梦见厕所非常脏是啥意思)

    以下内容大家不妨参考一二希望能帮到您!梦到厕所很脏梦到厕所很脏,五行之土,乃是丑土之象征,代表金库,财运良好,多为他人辅佐,求财者听从他人建议,方可在事业中作为。秋天梦之吉利,春天梦之不吉利。单身男人梦之,事业多被他人影响,人情世故处理不良,则心中多有不安,求财者听从他人意见的事业中有所改善之关键。