学习C++中的输入输出

C++与C保持很高的向后兼容性,因此可以包含,以便访问Prtff()函数以供输出。但是,C++提供的I/O更强大,更重要的是类型安全。您还可以使用ScFif()来进行输入,但是C++提供的类型安全特性意味着,如果使用C++,应用程序将更加健壮。...

01

08年

一种新的输出方式

Program code

C++与C保持很高的向后兼容性,因此可以包含,以便访问Prtff()函数以供输出。但是,C++提供的I/O更强大,更重要的是类型安全。您还可以使用ScFif()来进行输入,但是C++提供的类型安全特性意味着,如果使用C++,应用程序将更加健壮。

在上一课中,我们使用了一个使用cout的示例来讨论这一点。在这里,我们将更深入地从输出开始,因为它往往比输入更常用。

iostream类提供对输出和输入所需的对象和方法的访问。从字节流的角度考虑i/o——从应用程序到文件、屏幕或打印机——这是输出,或者从键盘——这是输入。

带cout的输出

如果你知道C,你可能知道&lt&书信电报;用于将位向左移位。例3&lt&书信电报;3是24。例如,左移将值加倍,因此3次左移将其乘以8。

在C++中,& lt;&书信电报;已在ostream类中重载,因此int、float和string类型(及其变体-例如double)都受支持。这是通过在<之间串接多个项目来实现文本输出的方法&书信电报;。

cout<<“一些文本”<<intvalue<<floatdouble<<endl;

这种特殊的语法是可能的,因为&lt&书信电报;实际上是一个函数调用,返回对ostream对象的引用。像上面这样的一条线实际上是这样的

cout.<<(“一些文本”).cout.<<(intvalue).cout.<<(floatdouble).cout.<<(endl);

C函数printf能够使用格式说明符(如%d)格式化输出。在C++中,CUT也可以格式化输出,但是使用不同的方式来完成。

02

08年

使用cout格式化输出

对象cout是iostream库的成员。请记住,这必须包含在

#包括<iostream>

此库iostream派生自ostream(用于输出)和istream(用于输入)。

文本输出的格式化是通过在输出流中插入操纵器来完成的。

什么是操纵者(a manipulator)?

它是一个可以改变输出(和输入)流特性的函数。在上一页中,我们看到了&lt&书信电报;是一个重载函数,返回对调用对象的引用,例如输出为cout,输入为cin。所有操纵器都会执行此操作,以便您可以将它们包括在输出中&lt&书信电报;或输入&gt&gt;。我们将查看输入和&gt&燃气轮机;在本课的后面。

计数<<endl;

endl是一个操纵器,用于结束线(并开始新的线)。它是一个也可以用这种方式调用的函数。

endl(cout);

虽然实际上你不会这么做。你这样使用它。

cout<<“一些文本”<<endl<<endl;//两个空行

文件只是流

需要记住的是,随着GUI应用程序的大量开发,为什么需要文本I/O功能?这不只是针对控制台应用程序吗?你们可能会做文件I/O,你们也可以在那个里使用它们,但输出到屏幕上的内容通常也需要格式化。流是一种非常灵活的处理输入和输出的方式,可以与

  • 文本I/O。与控制台应用程序中相同。
  • 串。便于格式化。
  • 文件I/O。

又是操纵者

虽然我们一直在使用ostream类,但它是从ios类派生的派生类,而ios类是从ios_基派生的。这个祖先类定义了作为操纵器的公共函数。

03

08年

cout操纵器列表

可以在输入或输出流中定义操纵器。这些对象返回对对象的引用,并放置在两对&lt&书信电报;。大多数操纵器在&lt;ios&gt;,但是endl、ends和flush来自&lt;ostream&gt;。多个操纵器接受一个参数,这些参数来自&lt;iomanip&gt;。

这里有一份更详细的清单。

从&lt;奥斯特雷姆&gt;

  • endl-结束该行并调用flush。
  • 结束-将“\0”(NULL)插入流中。
  • 刷新-强制立即输出缓冲区。

从&lt;ios&gt;。大多数在&lt;ios_基地&gt;&lt;ios&gt;。我按函数而不是按字母顺序对它们进行了分组。

  • boolalpha-将bool对象插入或提取为“真”或“假”。
  • noboolalpha-将布尔对象作为数值插入或提取。
  • 固定-以固定格式插入浮点值。
  • 科学-以科学格式插入浮点值。
  • 内部-内部证明。
  • 左-左对齐。
  • 右-右对齐。
  • dec-插入或提取十进制格式的整数值。
  • 十六进制-以十六进制(基数16)格式插入或提取整数值。
  • oct-以八进制(基数8)格式插入或提取值。
  • noshowbase-不要在值前面加上其基。
  • showbase-带基的前缀值。
  • 无显示点-如果不需要,则不显示小数点。
  • showpoint-插入浮点值时始终显示小数点。
  • noshowpos-如果数字>=0,则不要插入加号(+)。
  • showpos-如果数字>=0,请插入加号(+)。
  • noskipws-提取时不要跳过初始空白。
  • skipws-在提取时跳过初始空白。
  • nouppercase-不要用大写字母替换小写字母。
  • 大写-用大写等效字母替换小写字母。
  • unitbuf—插入后刷新缓冲区。
  • NONUNITBUF-不要在每次插入后刷新缓冲区。

04

08年

使用cout的示例

//ex2_2cpp

下面是此操作的输出,为了清晰起见,删除了一个或两个额外的行空间。

测试

注意:尽管大写,David打印为David,而不是David。这是因为大写仅影响生成的输出,例如十六进制打印的数字。因此,当大写字母运行时,十六进制输出4d2为4d2。

此外,大多数操纵器实际上在标志中设置了一个位,可以直接使用

cout.setf()

并用

cout.unsetf()

05

08年

使用setf和unsetf操作i/o格式

函数setf有两个重载版本,如下所示。而unset只清除指定的位。

setf(标志值);

变量标志是通过将所有需要的位与|进行ORing运算得到的。所以如果你想要科学的,大写的和boolalpha的,那么就用这个。仅设置作为参数传入的位。其他位保持不变。

cout.setf(ios|u base::scientific | ios|u base::大写| ios|u base::boolalpha);

生产

4d2

掩蔽位

setf的双参数版本使用掩码。如果在第一个和第二个参数中都设置了该位,则会设置该位。如果该位仅在第二个参数中,则该位被清除。值adjustfield、basefield和floatfield(如下所列)是组合标志,即多个标志或组合在一起。对于值为0x0e00的基本字段,它与dec | oct | hex相同。所以

setf(ios_base::hex,ios_basefield);

清除所有三个标志,然后设置十六进制。类似地,调整场是左|右|内部的,浮动场是科学的|固定的。

比特表

这个枚举列表取自微软Visual C++ 6。实际使用的值是任意的-另一个编译器可能使用不同的值。

skipws=0x0001

06

08年

关于木屐和cerr

与cout一样,clog和cerr是在ostream中定义的预定义对象。iostream类继承自ostream和istream,因此cout示例可以使用iostream。

缓冲和非缓冲

  • 缓冲-所有输出临时存储在缓冲区中,然后一次性转储到屏幕。cout和clog都是缓冲的。
  • 无缓冲-所有输出立即进入输出设备。无缓冲对象的一个示例是cerr。

下面的示例演示了cerr的使用方式与cout相同。

#包括<iostream>

缓冲的主要问题是,如果程序崩溃,那么缓冲区内容就会丢失,更难理解为什么会崩溃。无缓冲输出是即时的,因此在代码中洒几行这样的代码可能会很有用。

cerr<<“进入危险功能zappit”<<endl;

日志问题

建立程序事件日志是发现困难bug的一种有用方法,这种bug只会偶尔出现。但是,如果该事件是一个崩溃,那么您就有问题了——您是在每次调用之后将日志刷新到磁盘上,以便能够看到崩溃之前的事件,还是将其保存在缓冲区中,并定期刷新缓冲区,希望在崩溃发生时不会损失太多?

07

08年

使用cin输入:格式化输入

有两种类型的输入。

  • 格式化。以数字或某种类型读取输入。
  • 未格式化的。读取字节或字符串。这使得对输入流的控制更大。

下面是一个格式化输入的简单示例。

//excin_1.cpp:定义控制台应用程序的入口点。

它使用cin读取三个由空格分隔的数字(int、float、int)。键入数字后必须按enter键。

3 7.2 3将输出“您已输入3 7.2 3”。

格式化输入有限制!

如果您输入3.76 5 8,您将得到“you entered 3 0.76 5”,该行上的所有其他值都将丢失。这是正确的行为,因为。不是int的一部分,因此标记浮点的开始。

错误捕获

如果输入未成功转换,cin对象将设置失败位。此位是ios的一部分,可以在cin和cout上使用fail()函数读取,如下所示。

if(cin.fail())//做点什么

毫不奇怪,cout.fail()很少被设置,至少在屏幕输出上是这样。在后面关于文件I/O的课程中,我们将看到cout.fail()如何变为true。对于cin、cout等还有一个很好的()函数。

08

08年

格式化输入中的错误捕获

下面是一个输入循环的示例,直到正确输入浮点数。

//激子2.cpp 清除() 忽视

注:输入(如654.56Y)将一直读取到Y,提取654.56并退出循环。cin认为它是有效的输入

无格式输入

输入输出

键盘输入

cin 进入 返回

课程到此结束。

  • 发表于 2021-09-15 04:52
  • 阅读 ( 149 )
  • 分类:编程

你可能感兴趣的文章

神经网络(neural network)和深度学习(deep learning)的区别

神经网络与深度学习的关键区别在于,神经网络的运行方式与人脑中的神经元相似,可以更快地完成各种计算任务,而深度学习是一种特殊的机器学习,模仿人类获取知识的学习方法。 神经网络有助于建立预测模型来解决复...

  • 发布于 2020-10-18 10:17
  • 阅读 ( 1195 )

认知计算(cognitive computing)和机器学习(machine learning)的区别

认知计算和机器学习的关键区别在于,认知计算是一种技术,而机器学习是指解决问题的算法。认知计算使用机器学习算法。 认知计算使计算机能够模拟和补充人类的认知能力来做出决策。机器学习允许开发自学习算法来分...

  • 发布于 2020-10-18 10:57
  • 阅读 ( 604 )

被监督的(supervised)和无监督机器学习(unsupervised machine learning)的区别

关键区别-有监督和无监督机器学习 有监督学习和无监督学习是机器学习的两个核心概念。监督学习是一种机器学习任务,学习基于示例输入输出对将输入映射到输出的函数。无监督学习是从未标记的数据中推断出一个描述隐...

  • 发布于 2020-10-19 03:49
  • 阅读 ( 713 )

头文件(header file)和库文件(library file)的区别

...n,cos,tan,sqrt。这些函数已经在头文件中声明。 包括C++中的头文件也类似于C,也使用预处理器指令。在C++中添加头文件的语法包括:如果程序员希望包含iostream头文件,则可以使用#include完成。它是标准的输入输出流库。cin是...

  • 发布于 2020-10-19 18:35
  • 阅读 ( 370 )

为什么c编程仍然值得学习

... 虽然这是C语言难以学习的部分原因,但这也是为什么C程序员更倾向于与计算机的工作方式保持一致的原因。为了写出好的C代码,你必须像计算机那样思考:内存管理、输入/输出流、字节顺...

  • 发布于 2021-03-13 03:02
  • 阅读 ( 315 )

什么是神经网络?它们是如何工作的?

...究竟什么是神经网络?它是如何工作的?为什么它在机器学习中如此流行? ...

  • 发布于 2021-03-16 14:03
  • 阅读 ( 351 )

5 c编程技巧你必须学会入门

... 对于初学者来说,C有一个坏名声。学习这门语言有很多很好的理由,但是在开始学习的时候要记住一些基本的技巧。 ...

  • 发布于 2021-03-21 10:02
  • 阅读 ( 287 )

如何学习c编程与这个初学者的项目

学习编程是一种积累的经验。除了学习所选语言的语法外,还必须学习所有编程语言使用的一般原则。 ...

  • 发布于 2021-03-22 14:01
  • 阅读 ( 215 )

机器学习(machine learning)和神经网络(neural networks)的区别

机器学习和神经网络的主要区别在于,机器学习是指开发出能够分析和学习数据以做出决策的算法,而神经网络是机器学习中的一组算法,它们执行类似于人脑神经元的计算。 机器学习是一种开发自学习算法的技术,这种算法...

  • 发布于 2021-06-30 18:24
  • 阅读 ( 912 )

C(c)和C++(c++)的区别

...集,它支持结构编程和面向对象编程(OOP)。 引用 1.“学习C编程语言教程–Javatpoint.”Www.Javatpoint.com,可在此处获得。2C语言的特点–Javatpoint。“Www.Javatpoint.com,可在此处获得。3。”学习C教程-Javatpoint。“Www.Javatpoint.com,可在...

  • 发布于 2021-07-01 12:20
  • 阅读 ( 236 )
oh140207
oh140207

0 篇文章

相关推荐