当前位置: 首页 > wzjs >正文

如何进入谷歌网站绵阳新区大建设

如何进入谷歌网站,绵阳新区大建设,大连做网站seo,内蒙古建设安全监督站的网站一、输入输出流 1.1C中为什么要设计区别于C语言的输入/输出流 ①是为了使用起来更方便,不必再去书写占位符 ②让自定义类型的直接打印成为可能,只要使用运算符重载即可,而C语言中的输入/输出并不是运算符,自然也就无法重载 1.…

一、输入输出流

1.1C++中为什么要设计区别于C语言的输入/输出流

①是为了使用起来更方便,不必再去书写占位符

让自定义类型的直接打印成为可能,只要使用运算符重载即可,而C语言中的输入/输出并不是运算符,自然也就无法重载

1.2cerr和clog

他们是为错误和日志准备的,这里的‘c’与cin/cout中含义一样,都是表示将其转化为char[]类型字符串进行输出

但实际使用起来cerr和clog与cout几乎一样,使用范围并不广

1.3 cin的循环输入与iostate标志位

1.3.1cin的循环输入

我们在做一些算法题的时候往往会遇到需要循环输入的情况,其做法是

while(cin>>str){//...}

在书写过程中按ctrl+z可以退出,它的原理是什么呢

其实,cin>>str本质上是调用了string头文件下有关于>>的重载

其他内置类型也会去调用istream下的函数重载

可以看出,他们的返回值都是istream&类型

①为什么是引用类型

引用类型是因为输入流使用了单例模式,不允许拷贝构造和赋值重载

②为什么是istream进行条件判断

istream中实现了类型转换,转换其为bool类型,因此可以进行条件判断

综上,while(cin>>str)的本质实际上是

while(operator>>(cin,str).operator bool())

1.3.2 istream中进行bool类型转换的原理:iostate标志位

在io流中,有一个publid成员变量iostate(这是一个整型值

其中含有四个标志(这四个标志的区分是用整型值在内存中存储时,某个对应位置的bit位是否为1来区分

eofbit:即EOF

failbit:表示逻辑上操作错误

badbit:通常表示比较严重的错误,比如软件层面的程序问题

goodbit:正常状态

所谓operator bool就是查看标志位中的failbit或者badbit是否被设置为1,任何一个为1则返回0;其余情况返回1

1.3.3为什么结束输入的是ctrl+z

输入ctrl+z后,会设置failbit的标志与eofbit的标志为1,设置goodbit标志位为0

1.4四种标志位的接口查看及其使用

1.4.1接口查看函数

四种标志位分别有对应的查看接口

会返回bool类型值,查看对应标志的状态 

1.4.2使用时的问题

如果我希望连续两次是用while(cin<<str)怎么做呢?

要退出第一次就会改变标志,而标志改变就会导致第二次进不去

此时需要使用重置函数clear,它可以进行标志的更新:默认goodbit为1,其他为0

1.5cin和cout的效率问题

在竞赛题中为了提高速度,在使用cin和cout的时候会加上以下三行代码

ios_base::sync_with_stdio(false);cin.tie(nullptr);
cout.tie(nullptr);

他们的原理是什么?

①ios_base::sync_with_stdio(false);

C语言和C++有着不同的缓冲区

printf对应C语言的缓冲区cstdio流

cout对应C++的缓冲区iostream对象

而C++为了兼容C,在每次写入C++缓冲区之前与C语言缓冲区进行同步,这会造成一些消耗

将这一函数的参数置为false,即可关闭这种同步

② cin.tie(nullptr);和cout.tie(nullptr);

cin和cout本身也有绑定关系,可以通过nullptr将二者直接的绑定关系清空为“无绑定”

二、文件流fstream

2.1文件打开并进行读写的操作

使用的是open接口

 ①第一个参数与C中的fopen一样,都是指文件名

②第二个参数属于ios_base中定义的值

in表示读

out表示写

app属于在文件后添加

binary是读取二进制文件

如果要同时读+写等需求,中间用"|"连接;默认是读+写

完成读写操作,可以调用close接口进行文件的关闭 

2.2使用举例

2.2.1向文件中写

首先需要包一下<fstream>头文件

写的方式有很多种,可以用put,write接口,也可以用<<重载

ofstream ofs_1;
//默认读+写
ofs_1.open("text.txt");ofs_1.put('l');
ofs_1.write("abcdefgh", 5);
ofs_1 << "hello world" << endl;int i = 98;
ofs_1 << i << endl;ofs_1.close();

结果示意

从代码和结果中不难看出, 最实用的还是<<运算符重载

其次close不主动调用也没关系,因为ofstream类型的对象会自动调用析构,析构中包含close

2.2.2从文件中读

可以在声明ifstream类型对象的时候直接初始化

我们要读当前Test.cpp文件的内容,需要使用的是get函数一个一个字符获取,包括空格和换行

如果使用流插入运算符>>会出现自动忽略换行的问题

ifstream ifs("Test.cpp");char ch;
//ifs.open("Test.cpp");while (ifs.eof() != 1)
{//ifs >> ch;ch = ifs.get();cout << ch ;
}
return 0;

使用 ifs >> ch

使用 ifs.get()

2.2.3二进制文件的读写

例如图片文件的读写

ifstream ifs;char ch;
ifs.open("D:\\新建文件夹 (2)\\繁杂文件\\2.png",ios_base::in | ios_base::binary);while (ifs.eof() != 1)
{//ifs >> ch;ch = ifs.get();cout << ch;}

效果图

图片文件属于二进制文件,就算读出来也只能看到乱码,需要特定的方式来读取 

2.3文件读写的细节问题

①空格/换行在读的时候会自动作为分隔符,写的时候需要特地写上

②既可以读又可以写的对象:fstream

http://www.dtcms.com/wzjs/541308.html

相关文章:

  • 莆田网站建站建设企业内部网站制作模板
  • 网站建设兼职平台鹏鸿生态板官方网站开发区代理
  • 分局网站建设科技尽头
  • 中国诚乡建设部网站手机网站自适应屏幕
  • 中材矿山建设有限公司网站上海迪士尼乐园官网
  • 做设计有哪些免费网站微信小程序注册方式选哪个
  • 网站后台 灰色wordpress商城加导购
  • 学摄影的网站有哪些佛山做网络优化的公司
  • 做网站认证对网站有什么好处便利的合肥网站建设
  • 吉安市建设技术培训中心网站建设部网站水利设计资质
  • 好的网站建设公司了解网站开发 后台流程
  • 删除织梦综合网站百度企业网站建设
  • 2023网站分享注册营业执照网上申请入口
  • 怎么区分营销型网站美容手机网站模板
  • 网站建设报价单及项目收费明细表百度一下官方网
  • 安徽网站建设公司wordpress怎么把设置菜单去除
  • 潍坊企业免费建站广州网站排名优化服务
  • 绍兴网站seo浙江省外贸公司排名
  • 定制网站大概多少钱网站需求分析报告
  • 如今做哪些网站能致富柚段子wordpress
  • 网站ico添加创意创新设计方案
  • ueeshop建站费用销售推广的方法都有哪些
  • 南昌城市旅游网站建设53货源网下载app
  • 聊城市城乡建设部网站查询成都网站建设成功案例单招网
  • 站群系统有哪些php mysql网站开发全程实例.pdf
  • 二级学院网站建设方案专门做家居的网站
  • 如何做 试题类 网站沈阳网站建设技术公司排名
  • 重庆电子商务网站seo获取网站浏览者手机号
  • 宝安区住房和建设局网站双减之下托管班合法吗
  • 做网站前台需要学什么 后台乐清门户网