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

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();
}

总结

本篇文章我们认识了字符串、文件的读写,并认识了结构体和枚举的使用方式等。总体内容比较简单,有个大体的理解就可以。

好啦,本篇文章到这里就要和大家说再见啦,祝你这篇文章阅读愉快,你下篇文章的阅读愉快留着我下篇文章再祝!


参考资料:

  1. 百度百科 · C++
  2. 2023最新版C++【作者:bilibili-尚硅谷】

在这里插入图片描述


http://www.lryc.cn/news/320791.html

相关文章:

  • vscode 运行 java 项目之解决“Build failed, do you want to continue”的问题
  • yocto编译测试
  • rsync+inotify-tools文件传输
  • UGUI界面性能优化3-合理规划界面层级结构
  • 《论文阅读》EmpDG:多分辨率交互式移情对话生成 COLING 2020
  • C语言calloc函数的特点,效率低。但是进行初始化操作
  • 项目中遇到的sql问题记录
  • Python Web开发记录 Day13:Django part7 Ajax入门与案例(任务管理)
  • 寻找可能认识的人
  • 机器学习----特征缩放
  • 机器学习_正则化
  • python知识点总结(四)
  • upload-labs-pass01
  • 2.4 ROC曲线是什么?
  • mysql笔记:21. 演示脏读、不可重复读和幻读现象
  • iOS通过wifi连接硬件设备
  • SQL-Labs靶场“36-37”关通关教程
  • RabbitMQ介绍及搭建
  • VSCode + PicGo + Github 实现markdown图床管理
  • 小程序搜索排名优化二三事
  • 分布式 Session--一起学习吧之架构
  • 记录一下小程序自定义导航栏消息未读已读小红点,以及分组件的消息数量数据实时读取
  • qt+ffmpeg 实现音视频播放(二)之音频播放
  • Bash Shell中双引号中的感叹号问题详解
  • MFC中CString的用法及使用示例
  • 注册个人小程序
  • VTK----VTK的事件机制
  • 常用的vim和linux命令
  • 生产环境中间件服务集群搭建-zk-activeMQ-kafka-reids-nacos
  • Smart Light Random Memory Sprays Retinex 传统图像增强 SLRMSR