【C++】基础知识--输入/输出(5)
前面部分的示例程序几乎没有提供与用户的交互(如果有的话)。他们只是在屏幕上打印简单的值,但标准库提供了许多其他方式通过其输入/输出功能与用户交互。本节将简要介绍一些最有用的方法。
cin | 标准输入 |
cout | 标准输出 |
cerr | 标准错误(输出) |
clog | 标准日志记录(输出) |
我们将只看到更详细的内容和(标准输出和输入流); 并且也是输出流,因此它们本质上的工作方式类似于 ,唯一的区别是它们标识用于特定目的的流:错误消息和日志记录;在许多情况下,在大多数环境设置中,它们实际上做完全相同的事情:它们在屏幕上打印,尽管它们也可以单独重定向。
1.输出:
在大多数程序环境中,默认情况下,标准输出是屏幕,对于格式化的输出操作,与插入运算符一起使用,插入运算符写为(即两个“小于”号)。
cout << "Output sentence"; // 在屏幕上打印输出句子
cout << 120; // 在屏幕上打印数字120
cout << x; // 在屏幕上打印x的值
运算符将它后面的数据插入到它前面的流中。
双引号是造成差异的原因;当文本被封闭在它们之间时,文本按字面打印;如果不是,则文本被解释为变量的标识符,并改为打印其值。例:
cout << "Hello"; // 打印 Hello
cout << Hello; // 输出变量Hello的内容
多个插入操作 (<<) 可以链接在单个语句中:
cout << "This " << " is a " << "single C++ statement";
要插入换行符,应在换行符的确切位置插入换行符。在C++中,换行符可以指定为(即,反斜杠字符后跟小写)。例如:
cout << "First sentence.\n";
cout << "Second sentence.\nThird sentence.";
操纵器产生换行符,就像插入一样;但它还有一个额外的行为:流的缓冲区(如果有)被刷新,这意味着请求将输出物理写入设备(如果尚未写入)。这主要影响完全缓冲的流,并且(通常)不是完全缓冲的流。
2.输入:
在大多数程序环境中,默认情况下,标准输入是键盘,为访问它而定义的C++流对象是 。
对于格式化输入操作,与提取运算符一起使用,提取运算符写为(即两个“大于”符号)。然后,此运算符后跟存储提取数据的变量。例如:
int age;
cin >> age;
提取操作使用运算符后面的变量类型来确定它如何解释从输入读取的字符;如果是整数,则预期的格式是一系列数字,如果是字符串,则为字符序列等。
// i/o example#include <iostream>
using namespace std;int main ()
{int i;cout << "Please enter an integer value: ";cin >> i;cout << "The value you entered is " << i;cout << " and its double is " << i*2 << ".\n";return 0;
}
从中提取似乎使从标准输入中获取输入的任务变得非常简单明了。但是这种方法也有很大的缺点。在上面的示例中,如果用户输入了无法解释为整数的其他内容,会发生什么情况?好吧,在这种情况下,提取操作将失败。默认情况下,这允许程序继续而不设置变量值,如果以后使用该值,则会产生不确定的结果。
也可以链接提取以在单个语句中请求多个基准:
cin >> a >> b;
相当于:
cin >> a;
cin >> b;
在这两种情况下,用户都需要引入两个值,一个用于变量,另一个用于变量。
3.CIN和字符串:
提取运算符可用于获取字符串,其方式与基本数据类型相同:
string mystring;
cin >> mystring;
要从 获取整行,存在一个名为 的函数,它将流作为第一个参数,将字符串变量作为第二个参数。例如:
// cin with strings
#include <iostream>
#include <string>
using namespace std;int main ()
{string mystr;cout << "What's your name? ";getline (cin, mystr);cout << "Hello " << mystr << ".\n";cout << "What is your favorite team? ";getline (cin, mystr);cout << "I like " << mystr << " too!\n";return 0;
}
在两次调用 中,我们都使用相同的字符串标识符。程序在第二次调用中所做的只是将以前的内容替换为引入的新内容。
4.字符串流:
标准标头定义了一个称为的类型,该类型允许将字符串视为流,从而允许以与对 和 执行相同的方式从字符串中提取或插入字符串或插入操作。
string mystr ("1204");
int myint;
stringstream(mystr) >> myint;
这将声明 与初始化为 的值 和 类型的变量。然后,第三行使用此变量从字符串构造中提取。这段代码将数值存储在名为 的变量中。
// stringstreams
#include <iostream>
#include <string>
#include <sstream>
using namespace std;int main ()
{string mystr;float price=0;int quantity=0;cout << "Enter price: ";getline (cin,mystr);stringstream(mystr) >> price;cout << "Enter quantity: ";getline (cin,mystr);stringstream(mystr) >> quantity;cout << "Total price: " << price*quantity << endl;return 0;
}
在这个例子中,我们间接地从标准输入中获取数值:我们不是直接从中提取数值,而是从中获取字符串对象中的行,然后将该字符串中的值提取到变量和中。一旦这些是数值,就可以对它们执行算术运算,例如将它们相乘以获得总价。
@Neng
相关文章:
【C++】基础知识--输入/输出(5)
前面部分的示例程序几乎没有提供与用户的交互(如果有的话)。他们只是在屏幕上打印简单的值,但标准库提供了许多其他方式通过其输入/输出功能与用户交互。本节将简要介绍一些最有用的方法。 cin标准输入cout标准输出cerr标准错误(输…...

经典文献阅读之--PIBT(基于可见树的实时规划方案)
0. 简介 作为路径规划而言,不单单有单个机器人自主路径规划,近年来随着机器人行业的兴起,多机器人自主路径规划也越来越受到关注,对于多智能体寻路(MAPF)。一般的操作会给定一个地图、机器人集群、以及它们的初始位置和目的地&am…...

SAP-MM-计算方案字段解析
01、 “步骤”:标识此条件类型在计算方案中的顺序编号,此编号会影响到后续业务中条件类型的排序,不同条件类型之间的编号最好间隔大一些,这样设置便于以后对计算方案进行扩展; 02、 “计数器”࿱…...
go-gf框架两个表以事务方式写入示例
下面是对每一行代码的中文解释: // 创建数据库连接对象 var tx gdb.TX这行代码声明了一个名为tx的变量,类型为gdb.TX,表示数据库事务对象。 // 开启事务 if tx, err g.DB().Ctx(ctx).Begin(ctx); err nil {这行代码通过在数据库连接&…...
2023-5-31第三十一天
conform顺从,遵从,一致 squeeze挤压 proprietary专卖权,专利的,所有的 endeavor努力,尽力 comprise由...组成,包含 compose组成,写作 compact小型的 consult咨询,查阅 expan…...

什么是MQTT?mqtt协议和http协议区别
摘要: 什么是MQTT?MQTT(Message Queuing Telemetry Transport)译为:消息队列遥测传输,是一种轻量级的通讯协议,用于在网络上传输消息。MQTT 最初由 IBM 发布,后来成为 OASIS…...

平台使用篇 | 批处理(bat)脚本使用教程(四)
导读 一个开启多机软件在环仿真的批处理文件 (对应卓面RflyTools文件夹中SITLRun快捷方式),双击它,输入想要生成的飞机数量,即可生成多机软件在环仿真,等待RflySim3D显示3DFixed 4/4,然后可通过QGC控制飞机起飞。运行…...
接口的讲解
在这里之前我想童鞋们都学习过了springmvc。mybatis-plus。Springboot等一些框架 那么下面我们就整合这些框架 我们通过写crud这些接口 写接口的第一步就是引入pom文件 在pom文件里引入一下几种依赖 引入父级工程 thymeleaf导入模版工具类 SpringMVCjar包文件 热部署工具 l…...

G0第21章 :gin框架介绍、RESTful API、Gin渲染
G0第21章 :gin框架 01 内容介绍 https://gin-gonic.com/zh-cn/docs/ web本质 Web是基于HTTP协议进行交互的应用网络Web就是通过使用浏览器/APP访问的各种资源 package mainimport ("fmt""net/http" )func sayHello(w http.ResponseWriter, r…...
python list,dict操作
一、list 操作 Python中的列表是一种有序、可变的数据类型,可以存储任意类型的数据。以下是Python中常用的列表操作: 创建列表:使用[]或list()函数创建一个空列表,或者使用[value1, value2, ...]创建一个包含初始值的列表。 访问…...
我有一个页面a,在页面a中调用了一个组件,然后组件中要切换页面a的一块区域,该怎么实现?
你可以在组件中使用路由的编程式导航,通过访问路由实例来切换页面a的对应区域。具体来说,你可以先在页面a中设置一个具有唯一标识的占位符元素,然后在组件中通过路由实例访问这个元素并修改其内容或样式来实现区域切换。路由的编程式导航可以…...
ChatGPT唤醒AI游戏:AIGC持续走深,游戏或成AI最佳抓手
随着人工智能技术的不断发展,AI在游戏行业的应用日益深入。本文将详细探讨ChatGPT在AI游戏领域的应用,以及游戏如何成为AI技术的最佳抓手。让我们一起探讨这个有趣且充满潜力的领域。 一、引言 人工智能在各行各业都取得了巨大的成功,而游戏…...
远程服务和web服务和前端,三方通过socket和websocket进行双向通信传输数据
1. 什么是socket? 在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。通过 socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据。 2. 什么是websocket?…...

Linux 网络基础(2)应用层(http/https协议、请求格式、响应格式、session、cookie、加密传输)
说明:网络基础2讲解的是应用层的典型协议, 通过对于典型协议的理解,来体会数据的网络传输的软件层面的流程与原理。 面试中网络通信相关问题占了很大的比重,而网络通信相关的问题大多都集中在网络基础2这个单元中 下面是应用层的位…...
解决sshfs挂载报错
使用ssh命令和sshfs命令报错 read: Connection reset by peer rootjiangcheng01:~/common/remote# sshfs -o allow_other htrdxxx.xxx.xxx.xxx:/home/htrd /root/common/remote/dev01 read: Connection reset by peer 报错问题排查,追加命令 -o debug -o sshf s_d…...
由于过多的连接错误而被 MySQL服务器 阻止
Caused by: com.mysql.cj.exceptions.CJException: null, message from server: "Host 10.105.***.** is blocked because of many connection errors; unblock with mysqladmin flush-hosts" 这个错误可能表示当您尝试使用 IP 地址为 "10.105.***.**" 的…...

Go语言实现JDBC
Go语言操作数据库 Go语言提供了关于数据库的操作,包下有sql/driver 该包用来定义操作数据库的接口,这保证了无论使用哪种数据库,操作方式都是相同的; 准备工作: 下载驱动 需要在代码所在文件夹下执行相应的命令 go get github.com/go-sql-driver/mys…...
ubuntu修改环境变量的几种方法
ubuntu修改环境变量的几种方法 有多种方法可以修改Ubuntu系统的环境变量,包括: 临时修改环境变量:在终端中使用export命令可以临时修改环境变量。例如,要将PATH环境变量添加到新目录,可以运行以下命令: …...

基于html+css的图展示95
准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…...

数据库基础——5.运算符
这篇文章我们来讲一下SQL语句中的运算符操作。 说点题外话:SQL本质上也是一种计算机语言,和C,java一样的,只不过SQL是用来操作数据库的。在C,java中也有运算符,这两种语言中的运算符和数学中的运算符差距不…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...

MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...

网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...
省略号和可变参数模板
本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制
目录 节点的功能承载层(GATT/Adv)局限性: 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能,如 Configuration …...
全面解析数据库:从基础概念到前沿应用
在数字化时代,数据已成为企业和社会发展的核心资产,而数据库作为存储、管理和处理数据的关键工具,在各个领域发挥着举足轻重的作用。从电商平台的商品信息管理,到社交网络的用户数据存储,再到金融行业的交易记录处理&a…...

C++_哈希表
本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说,直接开始吧! 一、基础概念 1. 哈希核心思想: 哈希函数的作用:通过此函数建立一个Key与存储位置之间的映射关系。理想目标:实现…...