C++标准输入输出类cout,cin用法概述

news2024/11/23 21:02:55

cout 标准输出类

不同进制输出数字

cout 数字数字默认是以十进制表示,也可以是用其他的进制表示:例如:

八进制:std::cot
std::cout << std::oct << i << std::endl;
十进制:std::dec
std::cout << std::dec << i << std::endl;
十六进制:std::hex
std::cout << std::hex << i << std::endl;
注意:设置了上面三种进制控制符表示后,后面的默认都沿用该设置,例如:
int i = 10;
int a = 11;
int b = 12;
std::cout << std::hex << i << a << std::endl;
std::cout << b << std::endl;
那么后面的将都已十六进制输出

以二进制比特位输出:

在头文件 bitset 中名字空间 std 中有个 bitset 类可以将数字以二进制表示
#include <bitset>
例如:
double i = 2.6;
std::cout << std::bitset<4>(i) << std::endl;
其中<>中的 4 表示只显示低 4 位,i 就是要转换的数字
        在使用 cout 对内容格式进行控制的操作一般在 std 里面的一些类可以对其进行处理,具体的一个介绍将关注后续容器一章的讲解,下图讲述了一些输出格式控制的控制类,可以根据所需操作对应去查找相关 std 容器的用法。

cin 标准输入类

cin 也是 std 空间中的一个类,它重载了>>运算符用于做一个输入操作

例如:
int a;
float b;
double c;
char d;
char buf[128];
std::cin>>a;
std::cin>>b;
std::cin>>c;
std::cin>>d;
std::cin>>buf;
        需要注意的是,使用 cin 输入的时候,输入的类型一定要正确,否则会出现意想不到的错误,
例如:
#include <iostream>
int main()
{
    int a = 10;
    std::cin>>a;
    std::cout<<a<<std::endl;
    return 0;
}
当输入非数字的,a 的值就变成 0 去了

如果是在循环中,将使程序陷入死循环,例如
#include <string>
#include <iostream>
using namespace std;
int main( )
{
    int num;
    while(1)
    {
        cout << "请输数字: ";
        cin >> num; //当输入字母或者.时会导致 cin 状态异常陷入死循环
        cout << "你输入的数字是: " << num << endl;
    }
    return 0;
}

另外在对字符串进行输入的时候,遇到空格,TAB 和回车符就默认字符串结束了

cin.get 方式输入

方式一:
char a ;
a = std :: cin . get ();
        在键盘上获取一个字符给到返回值
方式二:
char a ;
std :: cin . get ( a );
        从键盘中获取一个字符给到第一个参数
方式三:
char a [ 128 ] = { 0 };
std :: cin . get ( a , 128 );
        从键盘中读取一个字符串给到第一个参数,第二个参数是字符串最大长度,相比于利用>>去读字符串, 它可以接收空格和 TAB.
方式四:
char a [ 128 ] = { 0 };
std :: cin . get ( a , 128 , '0' );
与方式三不同的是,它可以指定遇到什么字符结束,例如指定为‘0’就是遇到字符 0 就结束。

cin.getline 方式输入

 cin 类中函数:

std 空间中函数:

istream & getline ( istream & is , string & str ); // 默认以换行符结束
istream & getline ( istream & is , string & str , char delim );
方式一:使用 cin 类中函数
char a[128] = {0};
std::cin.getline(a,128);
std::cin.getline(a,128,'p'); //指定结束符
与 get 不同的是, cin.getline 不会将结束符或者换行符残留在输入缓冲区中
方式二:使用 std 空间中函数
#include <iostream>
#include<string>
int main()
{
    std::string a;
    std::getline(std::cin,a);
    std::cout<<a<<std::endl;
    return 0;
}
        这个是建议使用的一个字符串输入函数,它是 string 头文件中 std 名字空间中的一个函数,可
以对 string 进行输入,而上面的 get 输入方式只能对 char*类型进行输入

cin 清空缓冲区

std::cin.ignore();

用于清空缓冲区的内容
还可以使用 cin.ignore()来限定清除的缓冲区字符。例如:
#include <iostream>
#include<string>
int main()
{
    char a[128] = {0};
    std::cin>>a;
    std::cin.ignore(1024,'p');
    char b = std::cin.get();
    std::cout<<a<<":"<<b<<std::endl;
    return 0;
}

        可以看到 ignore 把缓冲区字符 p 之前的都清除了,也包括 p,其中 ignore 的第一个参数是一个最大清除流大小的一个字段,只要将它设置的足够大,就只有第二个参数有效了。

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

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

相关文章

【腾讯云HAI域探秘】0基础也能开发应用

【腾讯云HAI域探秘】0基础也能开发应用 文章目录 【腾讯云HAI域探秘】0基础也能开发应用前言腾讯云高性能应用服务&#xff08;HAI&#xff09;的简介环境搭建启动 高性能应用服务HAI 配置的 ChatGLM2-6B WebUI 进行简单的对话总结 前言 在当今数字化时代&#xff0c;人工智能…

通过IIS和内网穿透实现快速搭建本地web服务器并实现公网访问

文章目录 1.前言2.Windows网页设置2.1 Windows IIS功能设置2.2 IIS网页访问测试 3. Cpolar内网穿透3.1 下载安装Cpolar内网穿透3.2 Cpolar云端设置3.3 Cpolar本地设置 4.公网访问测试5.结语 1.前言 在网上各种教程和介绍中&#xff0c;搭建网页都会借助各种软件的帮助&#xf…

最新国产企业级低代码盘点:看看哪款更适合你

中国低代码平台市场在2018年开始崭露头角&#xff0c;于2021年逐渐形成一套完整的低代码、无代码市场生态体系。据艾瑞咨询发布的《2022年低代码行业研究报告》显示&#xff0c;与2020年相比&#xff0c;中国低代码市场规模将大幅增长至29.3亿元。预计未来五年&#xff0c;市场…

【EI会议征稿】第三届计算机、人工智能与控制工程国际学术会议(CAICE 2024)

The 3rd International Conference on Computer, Artificial Intelligence and Control Engineering (CAICE 2024) 第三届计算机、人工智能与控制工程国际学术会议 第三届计算机、人工智能与控制工程国际学术会议&#xff08;CAICE 2024&#xff09;将于2024年1月26-28日在西安…

UniPro自定义个人专属工作台 大幅提升工作效率

很多研发团队在开完每日站会后&#xff0c;工程师的工作习惯便是打开研发管理系统&#xff0c;先看看自己的待办事项&#xff0c;或是查看同事的需求、评论&#xff0c;亦或是查看今日份工作的高优先级项等等。 如何方便工程师能够快速查看和了解一天的工作究竟从哪开始呢&…

插件_日期_lunar-calendar公历农历转换

现在存在某需求&#xff0c;需要将公历、农历日期进行相互转换&#xff0c;在此借助lunar-calendar插件完成。 下载 [1] 通过npm安装 npm install lunar-calendar[2]通过文件方式引入 <script type"text/javascript" src"lib/LunarCalendar.min.js">…

Cannot resolve class ‘DruidDataSource‘

无法配置 DataSource&#xff1a;未指定“url”属性&#xff0c;并且无法配置嵌入数据源。 原因&#xff1a;无法确定合适的驱动程序类 原因是数据库没有配置或者没事错误 1配置配置文件报错 没有依赖 pom.xml加入 <dependency><groupId>com.alibaba</grou…

Databend + lakeFS:将数据版本控制嵌入你的分析工作流

作者&#xff1a;尚卓燃&#xff08;PsiACE&#xff09; 澳门科技大学在读硕士&#xff0c;Databend 研发工程师实习生 Apache OpenDAL(Incubating) Committer PsiACE (Chojan Shang) GitHub 云计算为以数据为中心的应用提供了廉价、弹性、共享的存储服务&#xff0c;这为现代…

致远OA wpsAssistServlet接口存在任意文件上传漏洞

致远OA wpsAssistServlet接口存在任意文件上传漏洞 免责声明漏洞描述漏洞影响漏洞危害网络测绘Fofa: app"致远互联-OA" && title"V8.0SP2" 漏洞复现1. 构造poc2. 发送数据包3. 访问webshell地址 免责声明 仅用于技术交流,目的是向相关安全人员展示…

10个国内设计师都在用的Figma插件分享给你,超实用!

随着设计工具的不断发展和持续创新&#xff0c;产生了许多实用的小插件&#xff0c;可以帮助设计师朋友们有效提高设计效率&#xff0c;节省不必要的设计时间和设计精力到意义和价值更高的设计部分上去。而Figma作为一个功能丰富有强大的专业设计工具&#xff0c;深受国内设计师…

低代码开发,节约成本更好的选择

目录 低代码开发过程中是如何工作的&#xff1f; 低代码开发具备哪些功能&#xff1f; 具备的功能有&#xff1a; 01、高性能、高拓展 02、功能丰富&#xff0c;满足通用场景 03、私有化部署 04、代码生成器&#xff0c;下载代码进行二次开发 05、适配国产化&#xff0c;支持主…

最小化安装移动云大云操作系统--BCLinux-R8-U2-Server-x86_64-231017版

有个业务系统因为兼容性问题&#xff0c;需要安装el8.2的系统&#xff0c;因此对应安装国产环境下的BCLinuxR8U2系统来满足用户需求。BCLinux-R8-U2-Server是中国移动基于AnolisOS8.2深度定制的企业级X86服务器通用版操作系统。本文记录在DELL PowerEdge R720xd服务器上最小化安…

JDK 21新特性深度分析,但我用Java 8

官方文档链接&#xff1a;https://openjdk.org/projects/jdk/21/ 下载链接&#xff1a;https://www.oracle.com/cn/java/technologies/downloads/#jdk21-windows 1、介绍 JDK21 是2023.09.19发布的正式版 其他版本的含义&#xff1a; Alpha&#xff1a;软件或系统的内部测试版…

[JavaWeb]——面试官:谈谈你对springboot配置文件的理解

&#x1f308;键盘敲烂&#xff0c;年薪30万&#x1f308; 目录 一、springboot中三种配置文件对比 二、语法格式 propertiles yml(推荐) XML 前言&#xff1a; 什么是配置文件❓ 配置文件是用于存储程序或系统配置信息的文本文件。它通常包含了一些参数和选项&#xff0…

LEECODE 1480一维数组的动态和

class Solution { public:vector<int> runningSum(vector<int>& nums) {vector<int> runningSum;int sum 0;int len nums.size();for(int i 0; i < len; i){sum sum nums[i];runningSum.push_back(sum);}return runningSum;} };

算法通关村第四关-黄金挑战基础计算器问题

大家好我是苏麟 , 今天带来栈的比较难的问题 . 计算器问题 基础计算器 LeetCode 224 描述 : 给你一个字符串表达式 s &#xff0c;请你实现一个基本计算器来计算并返回它的值。 s 由数字、、-、(、)、和 组成s 表示一个有效的表达式 不能用作一元运算(例如&#xff0c; …

玩转硬件之Micro:bit的玩法(四)——声控灯

智能家居的普及在近几年来呈现出了爆发式的增长。随着科技的不断进步和人们对便利生活的追求&#xff0c;越来越多的家庭开始采用智能家居系统&#xff0c;使生活更加智能化、便捷化。 智能家居的普及不仅改变了人们的生活方式&#xff0c;也为家庭带来了更多的便利和舒适。现…

Betaflight 4.5 + Aocoda-RC F405V2 + AT32F435 Mark4 试飞初步总结

Betaflight 4.5 Aocoda-RC F405V2 AT32F435 Mark4 试飞初步总结 1. 源由2. 试飞3. 问题3.1 图传功率设置异常3.2 图传信号不理想3.3 ELRS915 信号差3.4 RSSI dbm告警3.5 翻滚不太顺手3.6 摄像头色彩异常3.7 磁力计指示方向异常 4. 参考资料 1. 源由 开销了一整天的时间&…

去除短视频平台水印 | 一键下载神器

当咱们这些视频创作者在短视频平台找素材的时候&#xff0c;经常会碰到下载下来居然带着平台水印的烦恼&#xff0c;这可让咱们的创作受到了限制和困扰不过别着急&#xff01;咱这就推荐几款超方便的短视频一键去水印下载工具&#xff0c;帮你快速去掉水印&#xff0c;轻松搞定…

第五章 基于视图的SysML模型|系统建模语言SysML实用指南学习

仅供个人学习记录 定制的机制在15.7节 定制语言部分阐述 仅记录个别值得专门记下来的概念 SysML视图 画布 图内容diagram context 也被称作画布canvas 省略号 显示省略号表示并非所有可视分区元素均显示 离页连接器 两节点之间的路径标识反映了节点所表示的两个模型元…