01
08年
C++与C保持很高的向后兼容性,因此可以包含,以便访问Prtff()函数以供输出。但是,C++提供的I/O更强大,更重要的是类型安全。您还可以使用ScFif()来进行输入,但是C++提供的类型安全特性意味着,如果使用C++,应用程序将更加健壮。
在上一课中,我们使用了一个使用cout的示例来讨论这一点。在这里,我们将更深入地从输出开始,因为它往往比输入更常用。
iostream类提供对输出和输入所需的对象和方法的访问。从字节流的角度考虑i/o——从应用程序到文件、屏幕或打印机——这是输出,或者从键盘——这是输入。
如果你知道C,你可能知道<&书信电报;用于将位向左移位。例3<&书信电报;3是24。例如,左移将值加倍,因此3次左移将其乘以8。
在C++中,& lt;&书信电报;已在ostream类中重载,因此int、float和string类型(及其变体-例如double)都受支持。这是通过在<;之间串接多个项目来实现文本输出的方法&书信电报;。
cout<<“一些文本”<<intvalue<<floatdouble<<endl;这种特殊的语法是可能的,因为<&书信电报;实际上是一个函数调用,返回对ostream对象的引用。像上面这样的一条线实际上是这样的
cout.<<(“一些文本”).cout.<<(intvalue).cout.<<(floatdouble).cout.<<(endl);C函数printf能够使用格式说明符(如%d)格式化输出。在C++中,CUT也可以格式化输出,但是使用不同的方式来完成。
02
08年
对象cout是iostream库的成员。请记住,这必须包含在
#包括<iostream>此库iostream派生自ostream(用于输出)和istream(用于输入)。
文本输出的格式化是通过在输出流中插入操纵器来完成的。
它是一个可以改变输出(和输入)流特性的函数。在上一页中,我们看到了<&书信电报;是一个重载函数,返回对调用对象的引用,例如输出为cout,输入为cin。所有操纵器都会执行此操作,以便您可以将它们包括在输出中<&书信电报;或输入>>;。我们将查看输入和>&燃气轮机;在本课的后面。
计数<<endl;endl是一个操纵器,用于结束线(并开始新的线)。它是一个也可以用这种方式调用的函数。
endl(cout);虽然实际上你不会这么做。你这样使用它。
cout<<“一些文本”<<endl<<endl;//两个空行需要记住的是,随着GUI应用程序的大量开发,为什么需要文本I/O功能?这不只是针对控制台应用程序吗?你们可能会做文件I/O,你们也可以在那个里使用它们,但输出到屏幕上的内容通常也需要格式化。流是一种非常灵活的处理输入和输出的方式,可以与
虽然我们一直在使用ostream类,但它是从ios类派生的派生类,而ios类是从ios_基派生的。这个祖先类定义了作为操纵器的公共函数。
03
08年
可以在输入或输出流中定义操纵器。这些对象返回对对象的引用,并放置在两对<&书信电报;。大多数操纵器在<;ios>;,但是endl、ends和flush来自<;ostream>;。多个操纵器接受一个参数,这些参数来自<;iomanip>;。
这里有一份更详细的清单。
从<;奥斯特雷姆>;
从<;ios>;。大多数在<;ios_基地>;<;ios>;。我按函数而不是按字母顺序对它们进行了分组。
04
08年
下面是此操作的输出,为了清晰起见,删除了一个或两个额外的行空间。
测试注意:尽管大写,David打印为David,而不是David。这是因为大写仅影响生成的输出,例如十六进制打印的数字。因此,当大写字母运行时,十六进制输出4d2为4d2。
此外,大多数操纵器实际上在标志中设置了一个位,可以直接使用
cout.setf()并用
cout.unsetf()05
08年
函数setf有两个重载版本,如下所示。而unset只清除指定的位。
setf(标志值);变量标志是通过将所有需要的位与|进行ORing运算得到的。所以如果你想要科学的,大写的和boolalpha的,那么就用这个。仅设置作为参数传入的位。其他位保持不变。
cout.setf(ios|u base::scientific | ios|u base::大写| ios|u base::boolalpha);生产
4d2setf的双参数版本使用掩码。如果在第一个和第二个参数中都设置了该位,则会设置该位。如果该位仅在第二个参数中,则该位被清除。值adjustfield、basefield和floatfield(如下所列)是组合标志,即多个标志或组合在一起。对于值为0x0e00的基本字段,它与dec | oct | hex相同。所以
setf(ios_base::hex,ios_basefield);清除所有三个标志,然后设置十六进制。类似地,调整场是左|右|内部的,浮动场是科学的|固定的。
这个枚举列表取自微软Visual C++ 6。实际使用的值是任意的-另一个编译器可能使用不同的值。
skipws=0x000106
08年
与cout一样,clog和cerr是在ostream中定义的预定义对象。iostream类继承自ostream和istream,因此cout示例可以使用iostream。
下面的示例演示了cerr的使用方式与cout相同。
#包括<iostream>缓冲的主要问题是,如果程序崩溃,那么缓冲区内容就会丢失,更难理解为什么会崩溃。无缓冲输出是即时的,因此在代码中洒几行这样的代码可能会很有用。
cerr<<“进入危险功能zappit”<<endl;建立程序事件日志是发现困难bug的一种有用方法,这种bug只会偶尔出现。但是,如果该事件是一个崩溃,那么您就有问题了——您是在每次调用之后将日志刷新到磁盘上,以便能够看到崩溃之前的事件,还是将其保存在缓冲区中,并定期刷新缓冲区,希望在崩溃发生时不会损失太多?
07
08年
有两种类型的输入。
下面是一个格式化输入的简单示例。
//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认为它是有效的输入
课程到此结束。
神经网络与深度学习的关键区别在于,神经网络的运行方式与人脑中的神经元相似,可以更快地完成各种计算任务,而深度学习是一种特殊的机器学习,模仿人类获取知识的学习方法。 神经网络有助于建立预测模型来解决复...
认知计算和机器学习的关键区别在于,认知计算是一种技术,而机器学习是指解决问题的算法。认知计算使用机器学习算法。 认知计算使计算机能够模拟和补充人类的认知能力来做出决策。机器学习允许开发自学习算法来分...
关键区别-有监督和无监督机器学习 有监督学习和无监督学习是机器学习的两个核心概念。监督学习是一种机器学习任务,学习基于示例输入输出对将输入映射到输出的函数。无监督学习是从未标记的数据中推断出一个描述隐...
...n,cos,tan,sqrt。这些函数已经在头文件中声明。 包括C++中的头文件也类似于C,也使用预处理器指令。在C++中添加头文件的语法包括:如果程序员希望包含iostream头文件,则可以使用#include完成。它是标准的输入输出流库。cin是...
... 虽然这是C语言难以学习的部分原因,但这也是为什么C程序员更倾向于与计算机的工作方式保持一致的原因。为了写出好的C代码,你必须像计算机那样思考:内存管理、输入/输出流、字节顺...
... 对于初学者来说,C有一个坏名声。学习这门语言有很多很好的理由,但是在开始学习的时候要记住一些基本的技巧。 ...
机器学习和神经网络的主要区别在于,机器学习是指开发出能够分析和学习数据以做出决策的算法,而神经网络是机器学习中的一组算法,它们执行类似于人脑神经元的计算。 机器学习是一种开发自学习算法的技术,这种算法...
...集,它支持结构编程和面向对象编程(OOP)。 引用 1.“学习C编程语言教程–Javatpoint.”Www.Javatpoint.com,可在此处获得。2C语言的特点–Javatpoint。“Www.Javatpoint.com,可在此处获得。3。”学习C教程-Javatpoint。“Www.Javatpoint.com,可在...