数据结构中出现的cout是什么

C++学习之旅 第二章 printf与cout printf函数是格式化输出函 ,数,一般用于向标准输出设备按规定格式输出信息。在C++中产生格式化输出的函数。其向终端输出字符。printf中的f的意思是format,它的作用是按照指定的格式输出数据。printf也是C++中很重要的一个函数,它能让用户可以与程序交流,是一个多才多艺的函数。printf 将变量的内容输出到显示器上。 阅读详情
转载自cout百度百科
http://baike.baidu.com/item/cout?sefr=cr
由于以前学过C,所以这段代码的其它部分在我看来都还算“正常”,然而cout却很独特:既不是函数,似乎也不是C++特别规定出来的像if,for一类有特殊语法的“语句”。由于只是初步介绍,所以那本书只是简单的说cout是C++中的“标准输入输出流”对象……这对于我而言实在是一个很深奥的术语。这还没完,之后又遇见了cin……因为不知底细,从此使用它们的时候都诚惶诚恐,几欲逃回C时代那简明的printf(),毕竟好歹我可以说:我在调用的是一个函数。那有着一长串<<、>>的玩意,究竟算怎么回事呢?我一直想把它们当作关键字,可偏偏不是,而且居然是用C++语言“做”出来的,呵!但printf()用多了就开始有人好心地批判我的程序“C语言痕迹过重”……
后来随着学习的深入,总算大概明白了cout/cin/cerr/...的鬼把戏:那些东东不过是变着法儿“哄人”,其实说到底还是 函数调用,不过这函数有些特殊,用的是 运算符重载,确切地说(以下还是以cout为例)是 重载了“<<”运算符。我们就让它现出函数的本来面目,请看HelloWorld!的等效版本:
1
2
3
4
5
6
7
8
#include<iostream>
using  namespace  std;
int  main()
{
     cout.operator << ( "Hello,World!" );
     cout.operator << (endl);
     return  0;
}
编译运行,结果与经典版无二。上面程序应该更容易理解了:cout是一个ostream类的对象,它有一个成员运算符函数operator<<,每次调用的时候就会向 输出设备(一般就是屏幕啦)输出东东。嗯,这里有一个问题:为什么函数operator<<能够接受不同类型的数据,如 整型、 浮点型、字符串甚至 指针,等等呢?
我想你已经猜到了,没错,就是用 运算符重载。 运算符函数与 一般函数基本无异,可以任意 重载。标准库的设计者们早已经为我们定制了iostream::operator<<对于各种C++基本数据类型的重载版本,这才使得我们这些初学者们一上来就享受到cout<<"Hello,World!"<<endl;
cout.operator<<("Hello,World!").operator<<(endl);
才算“强等效”。究竟可不可以这样写?向 编译器确认一下……OK,NoProblem!
还有为什么可以连续写多个呢?请见如下的定义:
ostream& std::cout.operator<<();
注意前面的ostream&表示返回对象的引用,也就是可以继续cout了
对于cin,则是istream流类的对象,其重载了>>运算符,用法与cout大致相同
那么cout<<endl;是什么呢?

转载自:http://www.sjyhome.com/c++-cout-endl;.html

我们在最初学习C++语言时就接触到"cout<<endl;"这样的语句。我们都知道endl表示换行的意思。我一直习惯这样使用,却并不是清楚其内部实现是怎么样的。今天看《C++ Standard Library, Sec.13.6.1》,才真正弄明白。

首先,endl是一个操作符(Manipulators),但我们必须知道endl是一个什么类型的变量。endl是跟在”<<“运算符后面,故endl应该是一个参数。其实endl是一个函数名,它是一个"<<"运算符重载函数中的参数,参数类型为函数指针。下面我们看下内部函数实现。

ostream& ostream::operator << ( ostream& (*op) (ostream&))
{
// call the function passed as parameter with this stream   as the argument
return (*op) (*this);
}

std::ostream& std::endl (std::ostream& strm)
{
    // write newline
    strm.put('\n');
    // flush the output buffer
    strm.flush();
    // return strm to allow chaining
    return strm;
}

可以看出,运算符重载函数中的函数参数为一个函数指针,其指向一个输入输出均为ostream类引用的函数。而endl正是这样一个函数。所以我们在运行"cout<<endl;"语句时,endl是一个函数参数,类型为函数指针。然后会执行”return (*endl) (*this);“语句,即执行endl函数。endl函数输出一个换行符,并刷新输出缓冲区。

这样我们知道在标准库中endl是作为一个函数实现的,显然我们也可以直接调用这一函数。我们看下面的测试程序:

#include<iostream>
using namespace std;

int main()
{
    cout<<endl;
    endl(cout);
    return 0;
}

其输出为两个空行。”cout<<endl"中,endl是一个类型为函数指针的函数参数,通过运算符重载函数间接调用了endl函数。而“endl(cout)”中,endl是函数名,直接调用了endl函数。


cin和cout应用 本文主要介绍cin和cout用法及其示例 阅读详情

相关推荐

化学科学催化反应产率预测之Transformer建模SMILES(Datawhale AI 夏令营)

循环神经网络:由于所有的前文信息都蕴含在一个隐向量中,随着序列长度的增加,早期的上下文信息会逐渐被遗忘。卷积神经网络:受限的上下文窗口在建模长文本时存在天然不足。需要多层卷积操作才能处理长文本。在本篇文章中,我们学习了Transformer的基本架构及其在化学反应产率预测中的应用。通过利用Transformer的Encoder部分对SMILES进行建模,我们能够更有效地捕捉序列数据的特征,从而提高模型的预测性能。

不想宅的冷同学 1095

cout<<endl

cout 是 C++ 中的输出流,它的作用是向输出设备(通常是屏幕)输出信息。 << 是流插入运算符,它的作用是将一个值插入到输出流中。 endl 是换行符,它的作用是在输出完当前行后换到下一行。 所以,cout<<endl 的作用是向输出设备输出一个换行符,使得下一条输出语句输出到下一行。 例如: #include <iostream> using names...

weixin_35750747的博客 9674

RK3588s Camera ISP调优详解(一)ISP调试工具及环境配置(附下载途径)

本文主要介绍了rkisp tuner工具的连接与使用,并附上了工具及依赖库的下载地址

zongheng_raobo的博客 6270

《C++》基础入门_04——四大语句 | 输入与输出 | 变量工作机制

语句 空语句 声明语句 表达式语句 格式: 表达式; 表达式语句与表达式的区别: 表达式可以包含在其他表达式中,而 语句不可。 例如: if ((a = b) &amp;amp;amp;gt; 0) t = a; 不可写为: if ((a = b;) &amp;amp;amp;gt; 0) t = a; 复合语句 将多个语句用一对大括号包围, 便构成一个复合语句 • 例如 { sum=sum+i; i++; } 选择语句 1.

WaitFoF 6777

常学常新:《Attention Is All You Need》万字解读!

常学常新:《Attention Is All You Need》万字解读!

hunteritself的博客 3648

从 Classic ABAP 到 ABAP Cloud:一份面向开发者的 SAP 学习路线图与实战指南

ABAP技术演进路线:从语法到架构思维 本文系统梳理了现代ABAP开发者的能力成长路径。在S/4HANA与云时代,ABAP已从传统过程式语言转变为支持面向对象、测试驱动和云原生开发的现代技术栈。学习路线应围绕四大核心维度展开:1) 语言基础(ABAP OO/Modern ABAP);2) 工程化实践(ABAP Unit/ATC/Clean ABAP);3) 数据建模(CDS/AMDP);4) 服务化架构(Gateway/OData/Fiori)。文章强调以交付形态倒推技术栈,通过真实案例展示了如何将零散技术

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 360

数据结构二叉树的操作

二叉树的建立,先序,中序,后序,层序遍历,以及节点数的判断(包括单度节点,双分支节点,叶节点),计算树的深度,树的复制,判断两树是否相同,以及哈夫曼编码

m0_64598287的博客 307

【二 Deepseek+Coze案例】【 2.2 Coze + Deepseek 实现小红书爆款笔记:打造专属Agent智能体】

摘要 本文介绍了如何利用Coze平台和Deepseek模型构建自动化Agent智能体,用于生成和优化小红书爆款笔记。文章首先分析了爆款笔记的核心特征,包括精准定位、吸引标题、实用内容、精美排版和热门标签。随后提出Agent智能体的功能需求,涵盖热点追踪、内容生成与优化、数据分析及自动发布等模块。在技术实现上,详细阐述了从环境配置、数据采集到内容生成与优化的全流程,并提供了Python代码示例,展示如何调用Coze函数获取热点数据及竞品笔记。该方案通过智能化的内容创作与运营策略,帮助用户高效打造高曝光的小红书

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 2276

cout 数组_掌握算法-数据结构模式-数组和字符串

大体是啥?从概念上来说,数组就是将给定类型对象们映射到一组[0, n-1]范围内的一组整数上,这里n是对象们的个数。数组的查找和插入是很快的,这使得数组适合很多应用。数组操作最常见的错误就是读最有一个数组元素的下一个元素,常常带来灾难性的后果。没啥好说的了,举个例子吧!问题: 编写函数,函数的参数有两个,一个是数组A, 另一个是数组A的某个索引i,这个函数的功能是从新排序数组A,使得所有比A[i]...

weixin_39906192的博客 296

第10集:AIOps 平台架构设计!画出面试官最想看的系统全景图

本文介绍了如何将AIOps平台的六大功能模块整合为四层架构设计,并生成专业系统全景图。文章首先指出面试中架构设计能力的重要性,强调一张清晰的架构图能直观展现全局观。随后指导读者检查项目结构,准备绘图环境。核心部分详细拆解了四层架构:数据采集层(Prometheus、ELK等)、AI分析层(巡检、告警、预测等)、决策执行层(工作流引擎、自愈Agent)和展示交互层(API、控制台)。通过Python代码自动生成模块依赖关系图,并提供了面试讲解技巧。全文旨在帮助开发者在面试中系统性地展示项目架构设计能力。

qq_2937655951的博客 92

第1集:面试官视角:AIOps 核心能力模型与面试项目全局搭建【免费试读】

本文介绍了一门面向AIOps工程师的面试实战课程,针对当前运维领域薪资差距明显的痛点,帮助学员系统掌握企业级AIOps平台开发能力。课程承诺提供可直接用于面试和生产环境的代码实现,从零构建模块化AIOps平台。第一集重点讲解了面试官视角下的核心能力模型,并指导学员搭建项目基础环境,包括Python虚拟环境配置、本地大模型部署(Ollama)以及智能巡检Agent的代码实现。课程强调实战导向,通过40集系统讲解,帮助学员实现薪资40-60万的职业跃升。

qq_2937655951的博客 615

赛码网输出问题(用cout,不是return,都是leetcode惯得毛病)

第一次用赛码+测评+算法题 = 大声骂娘+怀疑人生 输出用return?去你码的,用cout!!!!!!!!!!!! 服了 下面看几个题,好好体会一下这个用cout输出才能AC的过程 #include <iostream> #include <list> #include <algorithm> #include <cmath> using namespace std; int main() { int n = 0; cin >..

qq_41605114的博客 1495

因素空间与可拓学的互补性分析及问题处理融合模型

随着知识与信息数量的快速增长以及信息获取便利性的增加,企事业组织所面临的内外部环境更加复杂,业务问题呈现非线性、不确定性、多维化和实时交互性等特点。业务环境的高度不确定性和面临问题的开放性,人工智能与问题处理的深入研究迫切需要有一种自觉地为信息科学与智能科学服务的定性定量相结合的智能数学模型。经典数学适于描述物质世界的数量与空间关系,智能数学必须能描述信息拓展与智能机理。

weixin_70923796的博客 261

学习记录1——使用cout时遇到的问题

我首先想到的是,这似乎是栈这种数据结构的特点,后进先出。也许在cout调用的时候先把第一个pop(s)的结果“3”存入流中,再把第二个pop(s)的结果“2”存入流中,然后按照“栈”的特点,先输出2,再输出3。第一次写文章,记录一下自己学习遇到的问题,如果哪里有误,欢迎各位大佬指正,帮助我学习、进步,我会及时改正!可见,无论是直接输出数字,或是调用函数输出,cout输出顺序都是从左到右。但这很快被我否定了,之前我使用cout输出时一直是从左到右输出。我的问题应该类似于这个,导致输出出现问题。

m0_74090829的博客 231

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

C++深度解析 初探C++标准库 --- cin,cout,std(31)

C++深度解析 初探C++标准库 --- cin,cout,std(31)       重载左移操作符 示例程序: #include &lt;stdio.h&gt; const char endl = '\n'; class Console { public: Console&amp; operator &lt;&lt; (int i) { pri...

Tim的嵌入式之旅 638

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

关于Qt无法直接使用cout和cin的问题

关于Qt无法直接使用cout和cin的问题 2015-03-22 14:59 1147人阅读 评论(0) 收藏 举报 本文章已收录于: 分类: Qt(17) 作者同类文章X opencv(7) 作者同类文章X c/c++(21) 作者同类文章X

ASKLW的博客 7506

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

cout输出char字符串_L2数据结构第06课 字符串习题课

L2-数据结构-第06课 字符串习题课例题 1 字符串移位包含问题定义一个循环移位操作: 将字符串的第一个字符移动到末尾形成新的字符串.给定两个字符串s1和s2,要求判定其中一个字符串是否是另一字符串通过循环移位后的子字符串。例如 CDAA是由 AABCD 两次移位后 BCDAA 的子串,而 ABCD 与 ACBD 不能通过移位来得到其中一个字符串是另一个字符串循环移位的子串。Input...

weixin_28740299的博客 173

学习数据结构-补充部分C++知识-基础不牢-地动山摇

各位同学: 本学期的数据结构课程授课过程中采用了一点点C++的知识,目的是为了简化、方便代码的编写。涉及的知识点有如下几个: 1、文件扩展名的变化 C语言的源代码文件扩展名为c,C++语言的源代码文件扩展名为cpp 2、头文件的变化 C语言采用scanf、printf作为输入输出函数,格式繁杂,容易出错,对应的头文件格式为:#include<stdio.h> C++语言采用cin、cout作为输入输出函数,格式简单,对应的头文件格式为: #include &l...

一匹刚学打乒乓球的老马 547

数据结构实验11二叉搜索树第11个测试点TLE

查询资料发现,的确有些题同样的代码,用cout cin就会超时,而用pritnf scanf就可以通过。数据结构oj实验11二叉搜索树第11个测试点总是显示超时,改挺多地方都不行,最后发现是cin的问题。

weixin_74662326的博客 483

告别printf 拥抱 std::cout

我们使用printf 的时候或者自己构造的printf,有的时候会有这样的烦恼,输出很容易出错,如果 int 类型对应 %s 那么必然要崩溃。为了解决问题结果打log崩溃,是令人很恼火的事。 c++ 的输出或者日志输出 std::cout << “hello” << endl; c++ 98 实现了如下函数: arithmetic types (1) ostream&amp...

justin_bkdrong的专栏 434

第三部分 数据结构 --第三章 树1372:小明的账单

1372:小明的账单 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 3381 通过数: 928 【题目描述】 小明在一次聚会中,不慎遗失了自己的钱包,在接下来的日子,面对小明的将是一系列的补卡手续和堆积的账单… 在小明的百般恳求下,老板最终同意延缓账单的支付时间。可老板又提出,必须从目前还没有支付的所有账单中选出面额最大和最小的两张,并把他们付清。还没有支付的账单会被保留到下一天。 请你帮他计算出支付的顺序。 【输入】 第1行:一个正整数N(N≤15,000),

zqhf123的博客 1652

数据结构自学第二周总结:C++内容复习

文章目录1. 输入输出语句1.1 cout<< 代替printf()1.2 cin >> 代替scanf()2. const常量修饰符3. 运算符重载 1. 输入输出语句 1.1 cout<< 代替printf() cout <<i<<','<<j<<','<<endl; //引号部分内容直接输出屏幕.endl相当于\n,表示回车换行 c++优点:用cout和cin不用指定格式 注意用 cout 和 cin 时

不爱学习的GD 312

hdu1166敌兵布阵

靠   你知道我为什么一直吵

u010627373的专栏 356

How to add new function to cout by using operator overloading

The results: No. : 1 Deadline : 3 Cost : 4 As we all know, the cout is an ostream operator that could print the data type that has already be written in the default setting. But sometimes, we need to construct some new data structure to satisfy our dema

SUNNY的博客 142

中国mooc浙大数据结构习题01-复杂度1 最大子列和问题,c++解法

题目:给定K个整数组成的序列{ N​1​​, N​2​​, ..., N​K​​ },“连续子列”被定义为{ N​i​​, N​i+1​​, ..., N​j​​ },其中 1。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20。现要求你编写程序,计算给定整数序列的最大子列和。...

annabelle1130的博客 762

C++之标准库的学习总结

一、标准库“引子”:1、操作符"<<"的原生意义是按位左移,例如:1<<2 它的意义是将整数1按位左移2位,即:00000001演变成...

Dada_ping的博客 422
上一篇: 转的北邮计算机学长考研的经验之谈
下一篇: 杭电oj--2005
Waitfou
博客等级 码龄10年 61粉丝 45原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值