C++杂记

文章目录

  • 前言
  • cin
    • 1. getline(cin, str)
    • 2. cin.getline(arr, number)
    • 3. cin.get()
    • 4. cin >> variable_name
    • 5. cin.clear();
  • 动态内存
    • 1. 可以在动态声名数组的同时进行初始化。
  • 数组
    • 1. &arr[0]
    • 2. &arr
    • 3. 数组输入指定长度和非数字时,停止

前言

在写《C++ Primer Plus》课后题过程中,发现的一些函数使用方法、动态内存、数组

cin

cin是istream类(输入流的其一)的一个对象。
抽取运算符 ( > > ) (>>) (>>),cin>>rplace.x返回的也是istream对象。
像 cin >> rplace.x 和cin >> rplace.x >> rplace.y 都将返回一个 istream对象。所以最终返回的结果是cin。
当 cin 被用于测试表达式时,根据输入是否成功,被转换为 bool 值 true 和 false。

struct rect
{double x;double y;
};int main()
{using namespace std;rect rplace;cout << "Enter the x and y values: ";while (cin >> rplace.x >> rplace.y){...}
...

对于结构体rect中,x被设置为了double数值型,所以,当输入不是数值(例如:字符)时,将返回 false,跳出循环。
也可以设置一些特殊的数值,例如有些条件可以考虑负数为终止条件。但是 cin >> 可以接收任何有效数字的输入。

1. getline(cin, str)

当你的程序中使用了 字符串 时,这个时候从键盘获取就需要使用<string>头文件中的 getline()函数

语法:

getline(cin, str);

str是需要接收字符串的变量。

需要头文件 #include <string>

2. cin.getline(arr, number)

接收字符串还可以用数组,这个时候,数组初始化需要一个足够大的数,arr[20]这种可以存储下你需要的字符串。
语法:

cin.getline(arr, number);

其中, arr是你声名的数组名,number是要从缓冲区接收几个字符。空格也不会终止(可以对比cin.get()

3. cin.get()

从键盘接收一个值,通常用于丢弃无用的字符,例如回车之类的。

4. cin >> variable_name

遇到 空格、Tab、回车都会终止。

    int m = 0, n=0;cin >> m >> n;cin.get();cout << m << n;

空白符指的是:空格和回车
cin 不会丢弃空白符,但是 >> 符号会跳过空白符。
所以上述代码中的提取出了 n 的值之后,输入流中还有一个回车,下次输入时,会先从输入流中使用这个回车键。所以,正常需要通过cin.get();来释放掉回车键,避免干扰后续输入。

5. cin.clear();

如果之前的输入有错误,为了不终止程序,需要用

cin.clear();

清除错误状态。

比较优秀的代码: “关于清除错误输入,保证输入正确”
这是一个求 阶乘 的代码,前面需要保证输入的是数值型,而且需要判断是大于零的值。

int n;cout << "Enter an integer number: ";while (!(cin >> n)){cin.clear();while (cin.get() != '\n'){continue;}cout << "Please enter an integer number: ";}if (n < 0){cout << "Negative number don't have factorial." << endl;exit(1);}

动态内存

1. 可以在动态声名数组的同时进行初始化。

注: CandyBar 是结构体。

    CandyBar *p_candybar = new CandyBar [3] {{"Mocha Munch", 2.3, 350},{"Big Rabbit", 5, 300},{"Joy Boy", 4.1, 430}};

其中,

CandyBar *p_candybar = new CandyBar [3]

动态声名了数组。
之后的 { } 进行了初始化。

数组

数组的指针。

1. &arr[0]

数组名是数组第一个元素的地址。例如数组名为 arr

arr == &arr[0];

取的是第一个元素,这个时候, ( & a r r [ 0 ] ) + 1 (\&arr[0])+1 (&arr[0])+1表示的的是第二个元素,增加了一个元素的长度。(等价于 a r r + 1 arr+1 arr+1)

2. &arr

&arr;

&arr 表示整个数组的地址,虽然也是指向第一个元素的位置,但是表示的长度是整个数组的长度。
也就是说 ( & a r r ) + 1 (\&arr)+1 (&arr)+1 增加了一个数组的长度,而不是增加一个元素的长度。

3. 数组输入指定长度和非数字时,停止

Fill_array()将double数组和长度作为参数。当数组被填满或者用户输入了非数字时,输入将停止,返回实际输入多少数字。

int Fill_array(double data[], int max_num) {std::cout << "Enter double numbers (non-digital to quit): " << std::endl;int i = 0;while ((i < max_num) && (std::cin >> data[i]))++i;// return the size of arrayreturn i;
}

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

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

相关文章

C++中的组合模式

目录 组合模式&#xff08;Composite Pattern&#xff09; 实际应用 文件系统 组织结构 图形对象 总结 组合模式&#xff08;Composite Pattern&#xff09; 组合模式是一种结构型设计模式&#xff0c;它将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使…

沃尔玛自养号测评:优势与技术要求解析

沃尔玛自养号测评是一种卖家在沃尔玛平台上提升店铺权重和排名的营销手段。传统运营策略的局限性日益显现&#xff0c;如营销手段单一、难以应对市场竞争等。因此&#xff0c;许多卖家为了提升店铺权重和排名&#xff0c;选择了自养号测评这一技术手段。 以下是对沃尔玛自养号…

关于BERT和embedding

embedding到一个低维向量&#xff0c;但是需要回到onehot高维表示&#xff0c;所以大部分填词游戏最后都需要加上一个MLP接头。 word2vec如此简单的结构&#xff0c;学习到的是embedding 基于计数的统计方法和word2vec融合就形成了glove词嵌入模型 总结&#xff1a;通过各种…

消费者消费数据时报错:INVALID_REPLICATION_FACTOR

今天部署了kafka集群&#xff0c;三台服务器&#xff0c;启动后&#xff0c;生产者发送数据&#xff0c;消费者接收数据的时候报错&#xff0c;INVALID_REPLICATION_FACTOR。 查了很多资料&#xff0c;说是要改kafka下config目录的server.properties,可能是副本数太小&#xff…

WPS中XLS表格使用的技巧记录

我遇到一个问题&#xff0c;xls表格中有一列数据的格式是会计专用&#xff0c;金额前面有货币符号&#xff0c;但是我想复制这列数据为普通的文本&#xff0c;并且在后面添加.00&#xff0c;有什么方法可以做到。 TEXT(B2, “0”) & “.00”

【第5章】Stable Diffusion大模型(简介/两种版本/安装/模型推荐/使用方式)ComfyUI基础入门教程

🍩 大模型简介 大模型,又称为Stable Diffusion模型,所有Stable Diffusion的绘图都是以该模型能力为基础上进行的。 发展到现在,大模型已经更新了很多个版本,大家听说过的可能有Stable Diffusion 1.4(简称SD1.4),Stable Diffusion 1.5(简称SD1.5),Stable Diffusion 2.0…

【react】如何合理使用useEffect

useEffect 是 React Hooks API 的一部分,它允许你在函数组件中执行副作用操作,比如数据获取、订阅或者手动更改 DOM。合理使用 useEffect 可以帮助你管理组件的生命周期行为,同时避免不必要的渲染和性能问题。以下是一些关于如何合理使用 useEffect 的建议: 明确依赖项: 当…

【计算机视觉】人脸算法之图像处理基础知识(四)

图像的几何变换 图像的几何变换是指在不改变图像内容的前提下对图像的像素进行空间几何变换。主要包括图像的平移变换、镜像变换、缩放和旋转等。 1.插值算法 插值通常用来放缩图像大小&#xff0c;在图像处理中常见的插值算法有最邻近插值法、双线性插值法、二次立方、三次…

sap怎么批量给信息记录打上删除标识

1.MEMASSIN-----事务代码 2.选择完成字段 3.根据条件查询需要冻结的信息记录 4.输入查询条件 5.全部勾选完成标识&#xff0c;点击保存&#xff0c;即可冻结完成

特殊矩阵:零矩阵(Zero)幺矩阵(Ones)单位矩阵(Identity)随机矩阵(Random)#matlab

在MATLAB中&#xff0c;通用的特殊矩阵主要包括以下几种&#xff0c;每种都有其特定的函数来创建&#xff1a; 零矩阵&#xff08;Zero Matrix&#xff09; 使用zeros函数创建,&#xff0c;元素全为0。 格式&#xff1a; zeros(m, n): 创建一个m行n列的零矩阵。 zeros(n):…

盘点国内外免费AI视频工具,助你先人一步拥抱AI

哈喽&#xff0c;各位小伙伴们好&#xff0c;我是给大家带来各类黑科技与前沿资讯的小武。 6月13日&#xff0c;Luma AI 在 X 平台&#xff08;原 Twitter&#xff09;宣布其视频生成模型 Dream Machine 开放测试&#xff0c;并提供免费试用&#xff0c;这在海外 AI 圈掀起了一…

配置中心理论学习

配置中心是一种用于集中管理应用程序配置信息的系统或服务。在微服务架构中&#xff0c;由于服务数量众多且可能分布在不同的环境中&#xff0c;配置中心的作用尤为突出。它允许开发者将配置信息从应用程序代码中分离出来&#xff0c;集中存储和管理&#xff0c;从而提高配置的…

C#防止多次注册事件

事件声明和使用部分的代码&#xff0c;防止多次注册事件主要通过判断事件中类型的委托实例是否为空实现 public class ReRegisterEvent {public delegate void Mydelegate(string message);private Mydelegate? mydel;public event Mydelegate Myevent{add{if (mydel null){…

买什么样的护眼大路灯比较好?五款专业级别的护眼灯推荐

在这个生活节奏的加快和科技的进步的时代&#xff0c;许多家长越来越关注生活质量以及身心健康问题。其中孩子的眼睛视力健康也逐渐引起了家长们的注意。 现在的孩子从早上睁开眼就开始学习&#xff0c;有时候还需要使用到电子产品辅助学习&#xff0c;晚上的写作业的情况更是…

【perl】基本语法 /备忘录/

分享 perl 语言学习资源 Perl 教程|极客教程 (geek-docs.com) Perl [zh] (runebook.dev) Perl 运算符 | 菜鸟教程 (runoob.com) Perl Documentation - Perldoc Browser Search the CPAN - metacpan.org 当然还有一些经典书籍&#xff0c;不再列举。 1、数字 1.1、数字表…

判断QT程序是否重复运行

打开exe&#xff0c;再次打开进行提示。 main.cpp添加&#xff1a; #include "QtFilePreview.h" #include <QtWidgets/QApplication> #include <windows.h> #include <qmessagebox.h> #pragma execution_character_set("utf-8")bool Ch…

java-抽象类和抽象方法1

## Java中的抽象类和抽象方法 ### 1. 抽象类的基本概念 在Java中&#xff0c;抽象类&#xff08;Abstract Class&#xff09;是用来声明一个类不完整&#xff0c;不能被实例化的。抽象类通常用作其他类的基类&#xff0c;为子类提供统一的接口和部分实现。抽象类使用abstract…

leetcode打卡#day46 322. 零钱兑换、279. 完全平方数、139. 单词拆分

322. 零钱兑换 class Solution { public:int coinChange(vector<int>& coins, int amount) {//min countvector<int> dp(amount1, INT_MAX);int n coins.size();//initdp[0] 0;//不包含顺序, 先物品再容量for (int i 0; i < n; i) {for (int j coins[i…

免费个人站 独立站 wordpress 自建网站

制作免费网站 | 免费网站构建器 | WordPress.com https://bioinformatics7.wordpress.com WordPress.com

【总线】设计fpga系统时,为什么要使用总线?

目录 为什么用总线 为什么选择AMBA 总结 系列文章 【总线】AMBA总线架构的发展历程-CSDN博客 【总线】设计fpga系统时&#xff0c;为什么要使用总线&#xff1f;-CSDN博客 【总线】AMBA总线家族的明星成员&#xff1a;AXI协议简介-CSDN博客 为什么用总线 在FPGA系统设计…