C++——字符串、读写文件、结构体、枚举
个人简介
👀个人主页: 前端杂货铺
🙋♂️学习方向: 主攻前端方向,正逐渐往全干发展
📃个人状态: 研发工程师,现效力于中国工业软件事业
🚀人生格言: 积跬步至千里,积小流成江海
🥇推荐学习:🍍前端面试宝典 🍉Vue2 🍋Vue3 🍓Vue2/3项目实战 🥝Node.js🍒Three.js🍖数据结构与算法体系教程🌕个人推广:每篇文章最下方都有加入方式,旨在交流学习&资源分享,快加入进来吧
C++基础篇
| 内容 | 参考链接 |
|---|---|
| C++入门(一) | C++——简介、Hello World、变量常量、数据类型 |
| C++入门(二) | C++——数组、多维数组、简单排序、模板类vector |
文章目录
- C++基础篇
- 前言
- 一、字符串
- 二、读写文件
- 1、文件读取
- 2、文件写入
- 三、结构体
- 四、 枚举
- 总结
前言
大家好,这里是前端杂货铺。
上一篇文章,我们初步认识了 C++,并学习了数组和模板类。
接下来,继续我们 C++ 的学习!
一、字符串
下面,进行一些对于字符串的相关操作,内容很简单,直接看代码和结果吧!
#include<iostream>
#include<string>
using namespace std;int main() {// 默认初始化string s1;// 拷贝初始化string s2 = s1;// 直接初始化string s3 = "Hello world!";string s4("hello world!");string s5(5, 'h');cout << s5 << endl; // hhhhh// 访问字符cout << "s4[1]=" << s4[1] << endl; // s4[1]=e// 修改 s4 的第一个字符为 Hs4[0] = 'H';cout << "s4=" << s4 << endl; // Hello world!// 修改 s4 的最后一个字符为 ?s4[s4.size() - 1] = '\?';cout << "s4=" << s4 << endl; // Hello world?for (int i = 0; i < s4.size(); i++) {s4[i] = toupper(s4[i]);}cout << "转为大写的s4:" << s4 << endl; // HELLO WORLD?// 字符串拼接string str1 = "hello";string str2("world");string str3 = str1 + ' ' + str2 + '!'; // hello world!cout << str3 << endl;// string str5 = "hello" + "world"; // 错误cin.get();
}
为什么
string str5 = "hello" + "world";为错误代码呢??
因为 "hello" 等价于 char str[6] = { 'h', 'e', 'l', 'l', 'o', '\0' }; ,char类型的数组是没有这样的拼接操作的,所以两个字符串字面值不能相加。
二、读写文件
C++ 中读文件使用 ifstream,写文件用 ofstream。
1、文件读取
我们首先在资源文件夹下创建一个 input.txt 文件,随意输入一些内容…

接下来,我们分别使用 按照单词逐个读取、逐行读取、逐个字符读取 的方式读取我们刚刚创建的 input.txt 文件
#include<iostream>
#include<fstream>
#include<string>
using namespace std;int main()
{// 文件读取ifstream input("input.txt");// 按照单词逐个读取string word;while (input >> word){cout << word << endl;}// 逐行读取string line;while (getline(input, line)){cout << line << endl;}// 逐个字符读取char ch;while (input.get(ch)) {cout << ch << endl;}cin.get();
}
以上三种方式打印的内容分别如下图(第三种方式太长了,没有完全截图,能理解逐个字符就行):



2、文件写入
我们先读取刚刚的 input.txt 文件,然后写入到 output.txt 文件
#include<iostream>
#include<fstream>
#include<string>
using namespace std;int main()
{// 文件读取ifstream input("input.txt");// 文件写入ofstream output("output.txt");// 逐行读取string line;while (getline(input, line)){output << line << endl;}cin.get();
}
我们找到与 input.txt 同文件夹的 output.txt 文件,即可看到如下内容:

三、结构体
结构体是用户自定义的复合数据结构,里面可以包含多种不同类型的数据对象。
下面的代码进行了 定义结构体、创建数据对象并做初始化、定义和遍历结构体数组 等操作,代码很简单,类似于类的定义和创建,一睹为快!
#include<iostream>
#include<string>
using namespace std;// 定义一个结构体
struct StudentInfo
{string name;int age;double score;
}stu2, stu3 = {"前端杂货铺", 22, 90};// 输出数据对象的完整信息
void printInfo(StudentInfo stu)
{cout << "学生姓名:" << stu.name << "\t 年龄:" << stu.age << "\t 成绩:" << stu.score << endl;
}int main()
{// 创建数据对象并做初始化StudentInfo stu = {"张三", 18, 95.5};StudentInfo stu1 = { "李四", 20, 85 };StudentInfo stuCopy = stu3;stu2.name = "王五";stu2.age = 12;stu2.score = 65;printInfo(stuCopy);printInfo(stu);printInfo(stu1);printInfo(stu2);// 定义结构体数组StudentInfo s[3] = {{"孙行者", 18, 85.2},{"行者孙", 20, 96.2},{"者行孙", 23, 85.2}};for (StudentInfo stu : s) {printInfo(stu);}cin.get();
}

四、 枚举
当遇到某个数据对象只能取有限个常量值的情况时(比如一周七天),C++提供了另一种批量创建符号常量的方式,可以替代 cont,即枚举类型 enum。
与结构体不同的是,枚举类型内只有有限个名字,它们都各自代表一个常量,被称为 “枚举量”。
#include<iostream>
using namespace std;enum Week
{Mon, Tue, Wed, Thu = 10, Fri, Sat, Sun
};int main()
{Week w1 = Mon;Week w3 = Week(3);Week w4 = Thu;Week w5 = Fri;cout << "w1 = " << w1 << endl; // 0cout << "w3 = " << w3 << endl; // 3cout << "w4 = " << w4 << endl; // 10cout << "w5 = " << w5 << endl; // 11cin.get();
}
总结
本篇文章我们认识了字符串、文件的读写,并认识了结构体和枚举的使用方式等。总体内容比较简单,有个大体的理解就可以。
好啦,本篇文章到这里就要和大家说再见啦,祝你这篇文章阅读愉快,你下篇文章的阅读愉快留着我下篇文章再祝!
参考资料:
- 百度百科 · C++
- 2023最新版C++【作者:bilibili-尚硅谷】

相关文章:
C++——字符串、读写文件、结构体、枚举
个人简介 👀个人主页: 前端杂货铺 🙋♂️学习方向: 主攻前端方向,正逐渐往全干发展 📃个人状态: 研发工程师,现效力于中国工业软件事业 🚀人生格言: 积跬步…...
vscode 运行 java 项目之解决“Build failed, do you want to continue”的问题
Visual Studio Code运行 java 起来似乎比 IDEA 更轻量、比 eclipse 更友好,是不可多得的现代编译法宝。 安装好官方推荐的 java 扩展包后,就可以运行 java 代码了。功能 比 code runner 强,支持 gradle、maven、普通java项目,运行…...
yocto编译测试
源码下载 git clone -b gatesgarth git://git.yoctoproject.org/poky lkmaolkmao-virtual-machine:~/yocto$ git clone -b gatesgarth git://git.yoctoproject.org/poky Cloning into poky... remote: Enumerating objects: 640690, done. remote: Counting objects: 100% (13…...
rsync+inotify-tools文件传输
目录 rsync rsync概述 rsync优缺点 rsync参数 rsync命令 rsync同步源 linux 安装rsync 安装rsync服务端 安装rsync客户端 windows 安装rsync rsync实践 inotify-tools inotify-tools概述 innotify-tools 命令、参数、事件 rsync客户端安装inotify-tools innotif…...
UGUI界面性能优化3-合理规划界面层级结构
在Unity中,UGUI(Unity GUI)是一种用于创建用户界面的工具。合理规划界面层级结构对于开发一个可维护和易于使用的界面非常重要。以下是一种合理的UGUI界面层级结构规划方式: Canvas(画布):Canva…...
《论文阅读》EmpDG:多分辨率交互式移情对话生成 COLING 2020
《论文阅读》EmpDG:多分辨率交互式移情对话生成 COLING 2020 前言简介模型架构共情生成器交互鉴别器损失函数前言 亲身阅读感受分享,细节画图解释,再也不用担心看不懂论文啦~ 无抄袭,无复制,纯手工敲击键盘~ 今天为大家带来的是《EmpDG: Multi-resolution Interactive E…...
C语言calloc函数的特点,效率低。但是进行初始化操作
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdlib.h> #include<string.h> #include<errno.h> #include<stdio.h> int main() { int *p (int *)calloc(10,sizeof(int)); //初始化,效率低,然而malloc函数相反…...
项目中遇到的sql问题记录
有一张表,表结构及数据如下: INSERT INTO test.test_approve(approve_no, tra_date, tablename, part_dt) VALUES (approve001, 2021-02-18 00:00:00, tableA, 2024-03-18); INSERT INTO test.test_approve(approve_no, tra_date, tablename, part_dt) …...
Python Web开发记录 Day13:Django part7 Ajax入门与案例(任务管理)
名人说:莫道桑榆晚,为霞尚满天。——刘禹锡(刘梦得,诗豪) 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 1、Ajax入门①简介②工作原理③优点④缺点⑤使用…...
寻找可能认识的人
给一个命名为:friend.txt的文件 其中每一行中给出两个名字,中间用空格分开。(下图为文件内容) 题目:《查找出可能认识的人 》 代码如下: RelationMapper: package com.fesco.friend;import or…...
机器学习----特征缩放
目录 一、什么是特征缩放: 二、为什么要进行特征缩放? 三、如何进行特征缩放: 1、归一化: 2、均值归一化: 3、标准化(数据需要符合正态分布): 一、什么是特征缩放: 通…...
机器学习_正则化
文章目录 代价函数 如果我们有非常多的特征,我们通过学习得到的假设可能能够非常好地适应训练集(代价函数可能几乎为 0),但是可能会不能推广到新的数据。 下图是一个回归问题的例子: 第一个模型是一个线性模型…...
python知识点总结(四)
这里写目录标题 1、Django 中的缓存是怎么用的?2、现有2元、3元、5元共三种面额的货币,如果需要找零99元,一共有多少种找零的方式?3、代码执行结果4、下面的代码执行结果为:5、说一下Python中变量的作用域。6、闭包7、python2与p…...
upload-labs-pass01
1.安装好环境进入关卡(记得打开小皮) 2.可以看到第一关是要求上传图片,但是同时限制了图片类型,那么如果我们将木马写入图片,但是类型又不在白名单,就要想办法绕过 3.可以看到这里的要求是有checkÿ…...
2.4 ROC曲线是什么?
2.4 ROC曲线是什么? 场景描述 二值分类器(Binary Classifier)是机器学习领域中最常见也是应用最广泛的分类器。 评价二值分类器的指标很多,比如precision、recall、F1score、P-R 曲线等。前面已对这些指标做了一定的介绍,但也发现这些指标或…...
mysql笔记:21. 演示脏读、不可重复读和幻读现象
文章目录 脏读1. 设置窗口B中事务的隔离级别2. 演示脏读3. 重新设置窗口B中事务的隔离级别4. 再次验证脏读 不可重复读1. 演示不可重复读2. 设置窗口B中事务的隔离级别3. 再次验证不可重复读 幻读1. 设置窗口B中事务的隔离级别2. 演示幻读3. 重新设置窗口B中事务的隔离级别4. 再…...
iOS通过wifi连接硬件设备
一、连接智能硬件设备的方式 连接智能硬件设备通常涉及到使用不同的通信技术和协议,例如 Bluetooth、Wi-Fi、Zigbee 等。下面我将详细介绍几种连接智能硬件设备的方式,并举例说明: 1.1 使用 Bluetooth 连接 方式: 通过使用 Cor…...
SQL-Labs靶场“36-37”关通关教程
一、36关 GET单引号宽字节注入 请求方式注入类型拼接方式GET联合、报错、布尔盲注、延时盲注id‘$id’ 首先我们进行测试(使用?id1\,查看过滤后的回显) 这里可以看到对我们的注释符进行了注释以及单双引号进行测试会发现都是如此ÿ…...
RabbitMQ介绍及搭建
架构 RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件,使用erlang语言编写,依赖Erlang环境运行。 Broker:运行消息队列服务进程的节点,包含Exchange、Queue; Producer:消…...
VSCode + PicGo + Github 实现markdown图床管理
目录 PicGo客户端VSvode插件 PicGo客户端 PicGo 是一个图片上传管理工具 官网:https://molunerfinn.com/PicGo/ github图传使用说明:https://picgo.github.io/PicGo-Doc/zh/guide/config.html#GitHub图床 步骤: 1、创建一个github公开仓库…...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...
【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...
R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...
