C++标准模板(STL)- 输入/输出操纵符-(std::endl)

news2024/11/20 6:19:00

操纵符是令代码能以 operator<< 或 operator>> 控制输入/输出流的帮助函数。

不以参数调用的操纵符(例如 std::cout << std::boolalpha; 或 std::cin >> std::hex; )实现为接受到流的引用为其唯一参数的函数。 basic_ostream::operator<< 和 basic_istream::operator>> 的特别重载版本接受指向这些函数的指针。这些函数(或函数模板的实例化)是标准库中仅有的可取址函数。 (C++20 起)

以参数调用的操纵符(例如 std::cout << std::setw(10); )实现为返回未指定类型对象的函数。这些操纵符定义其自身的进行请求操作的 operator<< 或 operator>> 。
 

输出 '\n' 并冲洗输出流

std::endl

template< class CharT, class Traits >
std::basic_ostream<CharT, Traits>& endl( std::basic_ostream<CharT, Traits>& os );

插入换行符到输出序列 os 并冲入它,如同调用 os.put(os.widen('\n')) 后随 os.flush() 。

这是仅输出的 I/O 操纵符,可对任何 std::basic_ostream 类型的 out 以表达式 out << std::endl 调用它。

注意

可用此操纵符立即产生新行的输出,例如在从长时间运行的进程显示输出、记录多个线程的活动或记录可能不期待地崩溃的程序活动时。在调用 std::system 前亦需要 std::cout 的显式冲入,若产生的进程进行任何屏幕 I/O 。多数其他通常的交互 I/O 场景中,使用 std::cout 时 std::endl 是冗余的,因为任何来自 std::cin 的输入、到 std::cerr 的输出或程序终止强制调用 std::cout.flush() 。某些源代码中鼓励用 std::endl 代替 '\n' ,这可能显著地降低输出性能。

多数实现中,标准输出是行缓冲的,而写入 '\n' 就会导致冲入,除非执行 std::ios::sync_with_stdio(false) 。这些情形中,不必要的 endl 只会降低文件输出的性能,而非标准输出的。

此维基上的代码示例遵循 Bjarne Stroustrup和《 C++ 核心方针》,只在需要时冲入标准输出。

需要冲入不完整的行时,可使用 std::flush 操纵符。

需要冲入每个字节的输出时,可使用 std::unitbuf 操纵符。

参数

os-到输出流的引用

返回值

os (到操纵后流的引用)

调用示例

#include <iostream>
#include <chrono>

template<typename Diff>
void log_progress(Diff d)
{
    std::cout << std::chrono::duration_cast<std::chrono::milliseconds>(d).count()
              << " ms passed" << std::endl;
}

int main()
{
    std::cout.sync_with_stdio(false); // 一些平台上 stdout 在写 \n 时冲入
    volatile int sink = 0;

    auto t1 = std::chrono::high_resolution_clock::now();
    for (int j = 0; j < 5; ++j)
    {
        for (int n = 0; n < 10000; ++n)
            for (int m = 0; m < 20000; ++m)
            {
                sink += m * n;    // 做一些工作
            }
        auto now = std::chrono::high_resolution_clock::now();
        log_progress(now - t1);
    }

    return 0;
}

输出

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1039215.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机毕设 基于大数据的抖音短视频数据分析与可视化 - python 大数据 可视化

文章目录 0 前言1 课题背景2 数据清洗3 数据可视化地区-用户观看时间分界线每周观看观看路径发布地点视频时长整体点赞、完播 4 进阶分析相关性分析留存率 5 深度分析客户价值判断 5 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;…

微信小程序的无限瀑布流写法

微信小程序的无限瀑布流实现总算做完了&#xff0c;换了好几种方法&#xff0c;过程中出现了各种BUG。 首先官方有瀑布流的插件&#xff08;Skyline /grid-view&#xff09;&#xff0c;不是原生的我就不想引入&#xff0c;因为我的方块流页面已经搭好了&#xff0c;引入说不定…

时空智友企业流程化管控系统任意文件上传漏洞复现【附POC】

文章目录 时空智友企业流程化管控系统任意文件上传漏洞复现0x01 前言0x02 漏洞描述0x03 影响平台0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现4.访问shell地址 0x06 修复建议 时空智友企业流程化管控系统任意文件上传漏洞复现 0x01 前言 免责声明&#xff1a;请…

股票难还是期货难?国内玩期货的人多吗?

股票和期货都是相对较难的金融投资工具。它们都有各自的优点和挑战&#xff0c;而且都需要深入了解市场、制定策略和进行风险管理。 就难度而言&#xff0c;期货和股票的难度主要在于以下方面&#xff1a; 1. 市场风险&#xff1a;股票和期货市场都存在风险&#xff0c;包括价格…

【沐风老师】3DMAX翻转折叠动画插件FoldFx使用方法详解

3DMAX翻转折叠动画插件FoldFx使用方法详解 3DMAX翻转折叠动画插件FoldFx&#xff0c;是3dMax运动图形工具&#xff0c;用于创建多边形折叠动画。用户几乎有无限的可能性&#xff0c;因为动画的每个方面都是可控的。 【适用版本】 适用于3dMax版本&#xff1a;2010及更新版本&a…

QT6.5.2编译PostgreSql驱动

一、环境 1、操作系统&#xff1a;win11 2、qt版本&#xff1a;6.5.2 3、PostgreSql版本:14.9 二、下载qbase源码 1、下载地址&#xff1a;https://github.com/qt/qtbase/tree/6.5.2 将下载的源码文件解压指定的的目录&#xff0c;找到src/plugins/sqldrivers根据自己的实…

基于springboot+vue的校园资产管理系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

小皮面板配置Xdebug,调试单个php文件

小皮面板配置Xdebug 首先下载phpstrom&#xff0c;和小皮面板 打开小皮面板&#xff0c;选中好要使用的php版本 然后点击【管理】> 【php扩展】> 【xdebug】 然后打开选中好版本的php位置 D:\Program_Files\phpstudy_pro\Extensions\php\php7.4.3nts打开php.ini文件…

[0CTF 2016]piapiapia 代码审计 字符串逃逸 绕过长度限制

第一次直接打包代码 然后查看有没有洞 学习一下 降低速度扫描dirsearch -t 2 超低速 扫描扫到了 /www.zip /profile.php /register.php /upload/ 未加参数 我们直接去看看 我们直接下载备份文件即可 config.php 存在flag变量 class.php 然后我们分析一下class.php &…

Visual Studio 2019 C# winform CefSharp 中播放视频及全屏播放

VS C# winform CefSharp 浏览器控件&#xff0c;默认不支持视频播放&#xff0c;好在有大佬魔改了dll&#xff0c;支持流媒体视频播放。虽然找了很久&#xff0c;好歹还是找到了一个版本100.0.230的dll&#xff08;资源放在文末&#xff09; 首先创建一个项目 第二、引入CefSha…

VMware安装debian11虚拟机详细步骤

VMware安装debian11虚拟机详细步骤&#xff0c;超详细&#xff0c;一次搞定。 目录 1&#xff0c;新建虚拟机 2&#xff0c;开始安装 3&#xff0c;磁盘分区&#xff08;手动&#xff09; 分区设置 配置LVM卷 4&#xff0c;软件包管理器、网络镜像等 5&#xff0c;完成安…

UOS 序列号激活指令及方法

前言&#xff1a;本方案主要介绍了6种不同的激活方式&#xff0c;包括 1、在线激活&#xff1b; 2、离线激活&#xff1b; 3、激活文件激活&#xff1b; 4、终端命令激活&#xff1b; 5、试用期激活&#xff1b; 6、测试激活码激活。 附&#xff1a;激活码正版验证网页&#xf…

Fedora Linux 39 Beta 预估 10 月底发布正式版

Fedora 39 Beta 镜像于今天发布&#xff0c;用户可以根据自己的使用偏好&#xff0c;下载 KDE Plasma&#xff0c;Xfce 和 Cinnamon 等不同桌面环境版本&#xff0c;正式版预估将于 10 月底发布 Fedora 39 Beta 版本主要更新了 DNF 软件包管理器&#xff0c;并优化了 Anaconda …

kotlin的集合使用maxBy函数报NoSuchElementException

kotlin设定函数 fun test() {listOf<Int>().maxBy { it } } 查看java实现

Vue+iview 组件中通过v-for循环动态生成form表单进行表单校验

在做项目时&#xff0c;需要根据需要动态添加或新增表单&#xff0c;同时还需要对表单做校验。详情如下图&#xff1a; 刚开始做表单验证的时候&#xff0c;对于这个动态的表单验证有点难搞&#xff0c;试了好几种方法都没有搞定。最后按照下面这种方法实现了&#xff0c;以此…

Express 基础操作和详解

Express 基础操作和详解 Express.js 是一个基于 Node.js 平台的 Web 应用程序框架&#xff0c;它旨在帮助开发者轻松构建和管理 Web 服务和应用程序。Express 提供了许多强大的功能&#xff0c;使得创建可扩展、灵活且高性能的 Web 应用变得相对容易。以下是 Express 的主要特点…

Github 开启 2FA-无需下载软件实现

Github 开启 2FA 验证了&#xff0c;如果不配置&#xff0c;后续会限制登录Github, 用代码实现配置 获取密钥 setup key 点击 setup key 链接&#xff0c;获取密钥 引入相关算法的 jar <dependency><groupId>com.amdelamar</groupId><artifactId>jot…

华为存储培训

01 存储前沿技术和发展趋势 狭义的存储定义 CD、DVD、ZIP、磁带、硬盘等 广义的存储定义 存储硬件系统&#xff08;磁盘阵列&#xff0c;控制器&#xff0c;磁盘柜&#xff0c;磁带库等&#xff09; 存储软件&#xff08;备份软件&#xff1b;管理软件&#xff0c;快照&…

Eclipse初步学习使用

1.配置自动填充 window->preference 2.自动判断错误&#xff0c;并给出解决方法 3.创建可执行文件&#xff1a; 新建package&#xff0c; 包内新建 javaclass&#xff0c;选择psvm&#xff0c; 4.编写程序&#xff0c;进行执行 右键&#xff0c;选择 run as applic…

第二证券:持股还是持币?多家券商:四季度行情有望回归

上星期初&#xff0c;海外商场持续调整&#xff0c;中美利差继续探底&#xff0c;一度压制A股体现。然而上星期五方针预期提振、AI权重股开释利好、外资大幅回流&#xff0c;共同引领A股走出一波触底反弹的独立行情。展望本周&#xff0c;A股将迎来中秋国庆长假前的最终一个买卖…