当前位置: 首页 > news >正文

C++复合数据类型:字符数组|读取键盘输入|简单读写文件

文章目录

  • 字符数组(C风格字符串)
  • 读取键盘输入
    • 使用输入操作符读取单词
    • 读取一行信息getline
    • 使用get读取一个字符
  • 读写文件

字符数组(C风格字符串)

字符串就是一串字符的集合,本质上其实是一个“字符的数组”。
在C中为了区分“字符数组”和“字符串”,C语言规定字符串必须用空字符结束,作为标记。
例如:

char str1[5] = {'h', 'e', 'l', 'l', 'o'}; // 不是字符串,是字符数组
char str2[6] = {'h', 'e', 'l', 'l', 'o', '\0'}; // 字符串

但是这样不方便,因此定义字符串是用双引号

char str3[] = "hello"; // 要不不指定,指定长度5的话会报错,因为最后有一个空字符
cout << sizeof(str3) << endl; //输出是6

建议使用标准库string,少使用C语言的字符数组类型。

读取键盘输入

使用输入操作符读取单词

标准库中提供了iostream,可以使用内置的cin对象,
特点:忽略开始的空白字符,遇到下一个空白字符就会停止(空格,回车,制表符等),如果输入“hello world”,读取到的就只有hello。注意"world"并没有丢,只是保存在输入流的“输入队列中”,可以使用更多string 对象获取。

string str;
// 读取键盘输入,遇到空白字符停止
cin >> str; //输入:hello world
cout << str << endl; //输出:hellostring str1, str2;
cin >> str1 >> str2;  // 输入:hello world
cout << str1 << str2 << endl; //输出:helloworld
//或者可以分开获取
string str3, str4;
cin >> str3; //输入:hello world
cout << str3 << endl; //输出:hello
cin >> str4;
cout << str4 << endl; //输出world

读取一行信息getline

getline函数有两个参数,一个是输入流对象cin, 一个是保存字符串的string对象,他会一直读取输入流中的内容,知道遇到换行符为止,然后把所有的内容保存到string对象中。

string str
getline(cin, str);
cout << str << endl;

使用get读取一个字符

char ch;
ch = cin.get(); //只能获取第一个字符
//或者
cin.get(ch)char str[20];
cin.get(str, 20); //字符数组
cout << str << endl;

读写文件

C++中提供ifstream 和 ofstream类分别用于文件输入和输出,需要引入头文件fstream。

#include<iostream>
#include<string>
#include<fstream>using namespace std;int main()
{ifstream input("./test.txt"); //读入指的是入计算机ofstream output("./output.txt"); //1.按照单词逐个读取// string word;// while(input >> word)// {//     cout << word << endl;// }//读取结束后指针在文件的最后,直接运行下面代码会没有输出,需要将上面的注释掉//2.逐行读取// string line;// while(getline(input, line))// {//     cout << line << endl;// }//3.逐个字符读取char ch;while(input.get(ch)){cout << ch << endl;}//逐个字符写入char ch;while(input.get(ch)){output << ch << endl;}
}

相关文章:

C++复合数据类型:字符数组|读取键盘输入|简单读写文件

文章目录 字符数组&#xff08;C风格字符串&#xff09;读取键盘输入使用输入操作符读取单词读取一行信息getline使用get读取一个字符 读写文件 字符数组&#xff08;C风格字符串&#xff09; 字符串就是一串字符的集合&#xff0c;本质上其实是一个“字符的数组”。 在C中为了…...

Windows11环境下配置深度学习环境(Pytorch)

目录 1. 下载安装Miniconda2. 新建Python3.9虚拟环境3. 下载英伟达驱动4. 安装CUDA版Pytorch5. CPU版本pytorch安装6. 下载并配置Pycharm 1. 下载安装Miniconda 下载安装包&#xff1a;镜像文件地址 将Miniconda相关路径添加至系统变量的路径中。 打开Anaconda Powershell Pr…...

泛型深入理解

泛型的概述 泛型&#xff1a;是JDK5中引入的特性&#xff0c;可以在编译阶段约束操作的数据类型&#xff0c;并进行检查。 泛型的格式&#xff1a;<数据类型>; 注意&#xff1a;泛型只能支持引用数据类型。 集合体系的全部接口和实现类都是支持泛型的使用的。 泛型的…...

Linux内核模块

文章目录 一、内核模块介绍二、模块讲解1、最简模块代码&#xff1a;2、模块三要素3、常用操作命令3.1、 lsmod&#xff1a;显示已加载模块状态3.2、 insmod&#xff1a;载入模块3.3、rmmod&#xff1a;卸载模块3.4、dmesg&#xff1a;显示信息3.5、modinfo&#xff1a;显示ker…...

Java 栈和队列的交互实现

文章目录 队列和栈的区别一.用队列模拟实现栈1.1入栈1.2出栈1.3返回栈顶元素1.4判断栈是否为空 二.用栈模拟实现队列2.1 入队2.2出队2.3peek2.4判断队列是否为空 三.完整代码3.1 队列模拟实现栈3.2栈模拟实现队列 队列和栈的区别 栈和队列都是常用的数据结构&#xff0c;它们的…...

HarmonyOS应用开发者高级认证满分指南

声明&#xff1a;由于HarmonyOS应用开发者高级认证的题库一直在变&#xff0c;所以文章中的题目直做参考。 1. 判断题 云函数打包完成后&#xff0c;需要到APPGallery Connect创建对应函数的触发器才可以在端侧中调用。 【错】每一个自定义组件都有自己的生命周期。 【对】基…...

CSharp中Blazor初体验

Blazor 是一个由微软开发的开源 Web 框架&#xff0c;用于构建富客户端 Web 应用程序使用 C# 语言和 .NET 平台。Blazor 允许开发人员使用 C# 语言来编写前端 Web 应用程序&#xff0c;而不需要像传统的 JavaScript 框架&#xff08;如 Angular、React 或 Vue.js&#xff09;那…...

Linux下新建用户,并进行授权

注意&#xff1a;以下操作需要在root用户下&#xff01; 新增用户 adduser 用户名设置密码 passwd 用户名更改目录所有者命令 chown -R 用户名:用户名 目录更改目录权限命令 chmod -R 755 目录...

STM32为基础的模拟I2C通用8bit和16bit读取以及多字节读取

GPIO模拟I2C驱动的通用代码&#xff0c;I2C的寄存器地址有8位和16位的&#xff0c;主要解决了同一个MCU同时处理8位和16位寄存器地址芯片时候的驱动问题。 typedef enum {IIC_8BIT_BASE_ADDR,IIC_16BIT_BASE_ADDR }iic_bits_e; typedef struct {uint8_t DevAddr;uint16_t RegA…...

算法训练营Day19

#Java #二叉树 #双指针 开源学习资料 Feeling and experiences&#xff1a; 二叉搜索树的最小绝对差&#xff1a;力扣题目链接 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数&#xff0c;其数值等于两值之差的…...

C++数据结构——二叉搜索树详解

目录 一&#xff0c;关于二叉搜索树 1.1 概念 1.2 基本结构 二&#xff0c;二叉搜索树接口实现 2.1 插入 2.2 查找 2.3 打印 2.4* 删除 三&#xff0c;二叉搜索树接口递归实现 3.1 查找 3.2 插入 3.3 删除 四&#xff0c;二叉搜索树的默认成员函数 五&#xff0c;…...

ros2机器人在gazebo中移动方案

原文连接Gazebo - Docs: Moving the robot (gazebosim.org) 很重要的地方&#xff1a;使用虚拟机运行Ubuntu的时候&#xff0c;需要关闭”加速3D图形“的那个选项&#xff0c;否则gazebo无法正常显示。 Moving the robot&#xff08;使用命令移动机器人示例&#xff09; In t…...

学习Java第74天,Ajax简介

什么是ajax AJAX Asynchronous JavaScript and XML&#xff08;异步的 JavaScript 和 XML&#xff09;。 AJAX 不是新的编程语言&#xff0c;而是一种使用现有标准的新方法。 AJAX 最大的优点是在不重新加载整个页面的情况下&#xff0c;可以与服务器交换数据并更新部分网页…...

【Java面试题】在Java中String,Stringbuffer,StringBuilder的区别?

Hi i,m JinXiang ⭐ 前言 ⭐ 本篇文章主要介绍在Java中String&#xff0c;Stringbuffer&#xff0c;StringBuilder的区别以及部分理论知识 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f349;博主收将持续更新学习记录…...

让AIGC成为你的智能外脑,助力你的工作和生活

人工智能成为智能外脑 在当前的科技浪潮中&#xff0c;人工智能技术正在以前所未有的速度改变着我们的生活和工作方式。其中&#xff0c;AIGC技术以其强大的潜力和广泛的应用前景&#xff0c;正在引领着这场革命。 AIGC技术是一种基于人工智能的生成式技术&#xff0c;它可以通…...

ubuntu12.04 源

替换 /etc/apt/sources.list deb http://old-releases.ubuntu.com/ubuntu precise main restricted universe multiverse deb http://old-releases.ubuntu.com/ubuntu precise-security main restricted universe multiverse deb http://old-releases.ubuntu.com/ubu…...

openssl数据压缩

介绍 数据压缩是将原有数据通过某种压缩算法计算得到相对数据量小的过程。这种过程是可逆的&#xff0c;即能通过压缩后的数据恢复出原数据。数据压缩能够节省存储空间&#xff0c;减轻网络负载。 在即需要加密又需要压缩的情况下&#xff0c;必须先压缩再加密&#xff0c;次…...

SQLturning:定位连续值范围起点和终点

在上一篇blog说到&#xff0c;如何去优化查询连续值范围&#xff0c;没看过的朋友&#xff0c;上篇blog链接[在此]。(https://blog.csdn.net/weixin_42575078/article/details/135067645?spm1001.2014.3001.5501) 那么今天来说说怎么将连续的数据合并&#xff0c;然后返回合并…...

饥荒Mod 开发(十七):手动保存和加载,无限重生

饥荒Mod 开发(十六)&#xff1a;五格装备栏 饥荒Mod 开发(十八)&#xff1a;Mod 添加配置选项 饥荒游戏会自动保存&#xff0c;本来是一个好的机制&#xff0c;但是当角色死亡的时候存档会被删除&#xff0c;又要从头开始&#xff0c;有可能一不小心玩了很久的档就直接给整没了…...

Skywalking系列之最新版9.2.0-JavaAgent本地构建

MAC 10.15.7IDEA 2021.2skywalking-agent 9.2.0-SNAPSHOTJDK 17/21 (最新的代码要看最新的要求&#xff0c;注意不能使用JDK8&#xff0c;会构建失败)Maven 3.6.0 关于本地构建JavaAgent源码 1、获取源码&#xff0c;加载submodule 分步执行&#xff1a; git clone https:/…...

Visual Studio 项目属性页开发完全教程:从基础到高级

Visual Studio 项目属性页开发完全教程&#xff1a;从基础到高级 【免费下载链接】project-system The .NET Project System for Visual Studio 项目地址: https://gitcode.com/gh_mirrors/pr/project-system Visual Studio 项目属性页是开发者管理项目配置的核心界面&a…...

BLE四大广播模式详解:可连接/不可连接/定向/周期广播

一、前言在低功耗蓝牙&#xff08;BLE&#xff09;开发中&#xff0c;广播&#xff08;Advertising&#xff09;是设备发现、连接建立、数据广播、设备重连的核心基石&#xff0c;所有BLE交互流程均始于广播报文的收发。不同于传统经典蓝牙&#xff0c;BLE所有广播行为标准化、…...

为什么软件开发偏爱 Linux?深度剖析 Linux 相较于 Windows 的核心优势

引言 在软件开发的世界里&#xff0c;一个有趣的现象是&#xff1a;无论是大型互联网公司的服务器集群&#xff0c;还是资深程序员的个人开发机&#xff0c;Linux 操作系统的身影无处不在。与之形成鲜明对比的是&#xff0c;尽管 Windows 在个人消费市场占据绝对主导地位&…...

XML 服务器

XML 服务器 引言 XML(可扩展标记语言)服务器在现代互联网技术中扮演着至关重要的角色。它为数据的传输和处理提供了灵活且高效的方式。本文将深入探讨XML服务器的概念、工作原理、应用场景及其在软件开发中的重要性。 什么是XML服务器? XML服务器是一种用于存储、处理和…...

基于MAX78000的离线鸟类声音识别:边缘AI从数据到部署全流程解析

1. 项目概述&#xff1a;当边缘AI“听懂”鸟鸣在野外生态监测或自家后院观鸟时&#xff0c;你是否有过这样的经历&#xff1a;听到一阵清脆或婉转的鸟鸣&#xff0c;却完全不知道是哪位“歌唱家”在表演&#xff1f;传统的鸟类识别依赖专家经验和图鉴比对&#xff0c;不仅门槛高…...

在Hermes Agent项目中接入Taotoken作为自定义模型供应商

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在Hermes Agent项目中接入Taotoken作为自定义模型供应商 基础教程类&#xff0c;针对使用Hermes Agent框架的开发者&#xff0c;详…...

基于STM32与LoRa的低功耗物联网气象站DIY全攻略

1. 项目概述&#xff1a;打造一个低功耗的家庭气象站前阵子想给家里的智能家居系统加点“环境感知”能力&#xff0c;琢磨着搞个能实时监测室外温湿度、风速风向的小玩意儿。市面上成品气象站要么数据出不来&#xff0c;要么功耗感人&#xff0c;不适合长期户外部署。于是&…...

VideoDownloadHelper终极指南:解锁浏览器视频下载的完整解决方案

VideoDownloadHelper终极指南&#xff1a;解锁浏览器视频下载的完整解决方案 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 还在为无法保存网…...

Lindy多步骤任务自动化落地全图谱(企业级架构师压箱底实践)

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Lindy多步骤任务自动化落地全图谱&#xff08;企业级架构师压箱底实践&#xff09; Lindy效应在自动化系统设计中揭示了一个关键洞察&#xff1a;越久经考验的实践&#xff0c;其未来预期寿命越长。Lindy多步…...

AI-eSIM 开启智联新入口,量讯物联助力企业把握万物智联新机遇

近期&#xff0c;在 2026 移动云大会 AI-eSIM 分论坛上&#xff0c;中国移动发布 AI-eSIM“139”多生态智能服务体系&#xff0c;引发物联网、智能终端与 AIoT 产业广泛关注。该体系以 1 个 AI-eSIM 芯片入口、3 大核心引擎、赋能 9 类重点场景&#xff0c;构建以 Token 为中心…...