C++学习第十五天----循环和文本输入

        昨天说到使用cin进行键盘输入的一些弊端,那么怎么解决呢?

1.使用cin.get(char)进行补救

        使用下面这句代码替换掉cin >> ch;,这样就会回显空格;

	cin.get(ch);//读取输入中的下一个字符(即使它是空格) 

程序清单5.17; · 0171d90 · Kite/C和C++ - Gitee.com       

         cin.get(ch)调用将一个值放在ch变量中,这意味着将修改该变量的值。在c语言中,要修改变量的值,必须将变量的地址传递给函数。但上述程序调用cin.get()时,传递的是ch,而不是&ch。在c语言中,这是无效的,但是c++有效,只要将参数声明为引用即可。头文件iostream将cin.get(ch)的参数声明为引用类型,因此该函数可以修改其参数的值。

c语言关于函数传参之传地址和传数据问题_函数地址传递_谢永奇1的博客-CSDN博客

2.使用哪一个cin.get()

        在c语言中,如果函数接受char指针和int参数,则使用该函数时,不能只传递一个参数(类型不同),c++可以。因为c++支持函数重载的OOP特性。函数重载允许创建多个同名函数,但是参数列表要不同

3.文件尾条件

        检测文件尾(EOF)

        < 是Unix和Windows命令提示符模式的重定向运算符。

        检测到EOF后,cin将两位(eofbit和failbit)都设置为1。通过成员函数eof()查看eofbit位是否被设置;通过成员函数fail()查看failbit位是否被设置;检测到EOF后,就返回true,否则返回false。

        Windows模拟文件尾----先按ctrl+z,然后按回车键;

4.EOF结束输入

        cin.clear()方法可以清除EOF标记,使输入继续进行;在有些系统中,也有可能ctrl+z就结束了输入输出,那么clear()就恢复不了了。

5.另一个cin.get()版本

        cout.put(char):也可用于显示字符,类似c语言的putchar(),其实我也没用过这个函数哈,笑死;put(char)可以传递int参数,但该参数会被强制转换为char。

        cin.get()到达EOF时,将没有可返回的字符,EOF被定义为-1,因为没有ASCII码为-1的字符。

	int ch;
	ch = cin.get();
	
	while (ch != EOF)
	{
		cout.put(ch);
		++count;
		ch = cin.get();
	}

        看上述代码,使用int ch,然后cin.get()替换cin.get(char),cout.put()代替cout,用EOF测试代替cin.fail()测试。

        EOF不表示输入中的字符,而是指出没有字符。

        进一步修改,EOF表示的不是有效数字编码,因此可能不与char类型兼容。例如,某些系统中char类型无符号,那怎么将EOF(-1)赋值给char类型呢?所以需要强制类型转换。

程序清单5.19; · 3d1ebde · Kite/C和C++ - Gitee.com

        下面的代码将输入中的下一个字符读入到ch1中,并将接下来的一个字符读入到ch2中。

cin.get(ch1).get(ch2);

6.嵌套循环和二维数组

         c++没有提供二维数组类型,但用户可以创建每个元素本身都是数组的数组。实际上它的排列并不是和我们想想的那种二维数组,而是一排的。学过c语言的小伙伴应该知道。二维数组是有行有列的。

int maxtemps[4][5];

        它代表maxtemps是一个包含4个元素的数组,其中每个元素都是由5个整数组成的数组。

        同样也可以把它看成四行五列的表格。

7.初始化二维数组

        初始化一维数组和二维数组;

int bus[5] = {23,11,34,43,32};

int maxtemps[4][5] =
{
    {96,100,45,63,36},
    {78,65,47,89,72},
    {75,57,43,26,78},
    {98,95,68,83,27}
};

8.使用二维数组

        程序清单5.20; · 63b1021 · Kite/C和C++ - Gitee.com

        在声明cities的时候,上述代码是使用了指针数组,这使得每一个元素都是char指针,可被初始化为一个字符串的地址。

        下面举例使用char数组的数组;

char cities[Cities][25] = 
{
    "",
    "",
    "",
    ""
};

        下面举例使用string对象数组;如果希望字符串是可以修改的,则应省略限定符const;

const string cities[Cities] = 
{
    "",
    "",
    "",
    ""
};

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

面试题大揭秘!Java中== 与equals的区别?

大家好&#xff0c;我是你们的小米&#xff01;今天我们要来聊一个在Java面试中经常被问到的问题&#xff1a; 与 equals 的区别。这可是一个重要而且常常令人头疼的问题哦&#xff01;废话不多说&#xff0c;咱们马上开启今天的探索之旅吧&#xff01; 背景知识 在开始深入探…

HCIP 三层架构实验

三层架构实验 拓扑和思路拓扑思路LSW配置LSW1LSW2LSW3 DHCPLSW2LSW1 ACL外网冗余 拓扑和思路 拓扑 思路 首先划分网段&#xff0c;然后LSW1和LSW2和R1可以用ospf宣告就行&#xff0c;然后R1写条缺省指向R2 然后可以将LSW1和LSW2三合一&#xff0c;给交换机配置换分组&#x…

ThreadLocal内存泄漏问题

引子&#xff1a; 内存泄漏&#xff1a;是指本应该被GC回收的无用对象没有被回收&#xff0c;导致内存空间的浪费&#xff0c;当内存泄露严重时会导致内存溢出。Java内存泄露的根本原因是&#xff1a;长生命周期的对象持有短生命周期对象的引用&#xff0c;尽管短生命周期对象已…

FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」

文章目录 前言1. 本地搭建FastDFS文件系统1.1 环境安装1.2 安装libfastcommon1.3 安装FastDFS1.4 配置Tracker1.5 配置Storage1.6 测试上传下载1.7 与Nginx整合1.8 安装Nginx1.9 配置Nginx 2. 局域网测试访问FastDFS3. 安装cpolar内网穿透4. 配置公网访问地址5. 固定公网地址5.…

基于swing的零件销售系统java jsp客户信息维护mysql源代码

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 基于swing的零件销售系统 系统有1权限&#xff1a;管…

mac垃圾清理软件有哪些

随着使用时间的增加&#xff0c;mac系统会产生一些垃圾文件&#xff0c;影响系统的性能和稳定性。为了保持mac系统的高效&#xff0c;用户需要定期使用mac垃圾清理软件来清理系统缓存、日志、语言包等无用文件。CleanMyMac是一款功能强大的mac垃圾清理软件&#xff0c;它可以帮…

mysql通过binlog日志恢复误删数据

1、先查看binlog功能是否开启 show variables like %log_bin%;log_bin为ON说明可以使用binlog恢复&#xff0c;如果为OFF说明没有开启binlog。 2、删除部分数据做测试 3、查找binlog文件位置 show variables like %datadir%;cd /var/lib/mysqlls -l删除数据时间是在文件154与…

Linux知识点 -- Linux多线程(二)

Linux知识点 – Linux多线程&#xff08;二&#xff09; 文章目录 Linux知识点 -- Linux多线程&#xff08;二&#xff09;一、线程互斥1.背景概念2.多线程访问同一个全局变量3.加锁保护4.问题5.锁的实现 二、线程安全1.可重入与线程安全2.常见情况3.可重入与线程安全的联系 三…

Azure CLI 进行磁盘加密

什么是磁盘加密 磁盘加密是指在Azure中对虚拟机的磁盘进行加密保护的一种机制。它使用Azure Key Vault来保护磁盘上的数据&#xff0c;以防止未经授权的访问和数据泄露。使用磁盘加密&#xff0c;可以保护磁盘上的数据以满足安全和合规性要求。 参考文档&#xff1a;https://l…

基于swing的超市管理系统java仓库库存进销存jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 基于swing的超市管理系统 系统有3权限&#xff1a;管…

RHCE——四、Web服务器(理论篇)

Web服务器 一、Web服务器1、www简介1.1 常见Web服务程序介绍&#xff1a;1.2 服务器主机1.3 主要数据1.4 浏览器 2、网址及HTTP简介2.1 URL2.2 http请求方法:2.3 HTTP协议请求的工作流程&#xff1a; 3、www服务器的类型静态网站动态网站 二、快速安装Apache1、安装2、准备工作…

kafka--kafka的基本概念-topic和partition

一、kafka的基本概念-topic和partition 1、topic &#xff08;主题 &#xff09; topic是逻辑概念 以Topic机制来对消息进行分类的&#xff0c;同一类消息属于同一个Topic&#xff0c;你可以将每个topic看成是一个消息队列。 生产者&#xff08;producer&#xff09;将消息发…

Android动态添加和删除控件/布局

一、引言 最近在研究RecyclerView二级列表的使用方法&#xff0c;需要实现的效果如下。 然后查了一些博客&#xff0c;觉得实现方式太过复杂&#xff0c;而且这种方式也不是特别受推荐&#xff0c;所以请教了别人&#xff0c;得到了一种感觉还不错的实现方式。实现的思路为&…

MySQL分页查询-性能优化

MySQL分页查询优化 一、背景二、原因三、解决四、原理探究 https://blog.csdn.net/hollis_chuang/article/details/130570281 一、背景 业务背景&#xff1a;给C端10万级别的用户&#xff0c;同时发送活动消息&#xff0c;活动消息分为6类。数据背景&#xff1a;mysql表有百万…

SpringBoot自动配置原理

Spring Boot 的自动配置可以根据添加的jar依赖&#xff0c;自动配置 Spring Boot 应用程序。例如&#xff0c;我们想要使用Redis&#xff0c;直接在POM文件中增加spring-boot-starter-data-redis依赖&#xff0c;然后我们配置下连接信息就可以使用了。 那么Spring Boot 是如何…

机器学习笔记之优化算法(十五)Baillon Haddad Theorem简单认识

机器学习笔记之优化算法——Baillon Haddad Theorem简单认识 引言 Baillon Haddad Theorem \text{Baillon Haddad Theorem} Baillon Haddad Theorem简单认识证明过程证明&#xff1a;条件 1 ⇒ 1 \Rightarrow 1⇒ 条件 2 2 2证明&#xff1a;条件 3 ⇒ 3 \Rightarrow 3⇒条件 1…

一个计算机专业的学生数据结构这门课学到什么程度才能算学的还不错?

数据结构之所以重要是因为它处于算法中的基础地位&#xff0c;与解决实际问题关系密切&#xff1b;而之所以不重要是因为课本上能学到的所有实现都已经有人造过轮子了&#xff0c;甚至已经作为很多语言的标准API存在了。 换句话来说&#xff0c;在以后的编码生涯中&#xff0c…

ceph集群的扩容缩容

文章目录 集群扩容添加osd使用ceph-deploy工具手动添加 添加节点新节点前期准备新节点安装ceph&#xff0c;出现版本冲突 ceph-deploy增加节点 集群缩容删除osd删除节点 添加monitor节点删除monitor节点使用ceph-deploy卸载集群 实验所用虚拟机均为Centos 7.6系统&#xff0c;8…

Leetcode74. 搜索二维矩阵

给你一个满足下述两条属性的 m x n 整数矩阵&#xff1a; 每行中的整数从左到右按非递减顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target &#xff0c;如果 target 在矩阵中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 class…

【从零开始的rust web开发之路 二】axum中间件和共享状态使用

系列文章目录 第一章 axum学习使用 第二章 axum中间件使用 文章目录 系列文章目录前言一、中间件是什么二、中间件使用常用中间件使用中间件使用TraceLayer中间件实现请求日志打印自定义中间件 共享状态 前言 上篇文件讲了路由和参数相应相关的。axum还有个关键的地方是中间件…