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公开仓库…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...
C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...
Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...
TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...
关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...
