C++——字符串、读写文件、结构体、枚举

这篇具有很好参考价值的文章主要介绍了C++——字符串、读写文件、结构体、枚举。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

个人简介

👀个人主页: 前端杂货铺
🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展
📃个人状态: 研发工程师,现效力于中国工业软件事业
🚀人生格言: 积跬步至千里,积小流成江海
🥇推荐学习:🍍前端面试宝典 🍉Vue2 🍋Vue3 🍓Vue2/3项目实战 🥝Node.js🍒Three.js🍖数据结构与算法体系教程

🌕个人推广:每篇文章最下方都有加入方式,旨在交流学习&资源分享,快加入进来吧

C++基础篇

内容 参考链接
C++入门(一) C++——简介、Hello World、变量常量、数据类型
C++入门(二) C++——数组、多维数组、简单排序、模板类vector

前言

大家好,这里是前端杂货铺。

上一篇文章,我们初步认识了 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 的第一个字符为 H
	s4[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 文件,随意输入一些内容…

C++——字符串、读写文件、结构体、枚举,C++,c++,状态模式,开发语言

接下来,我们分别使用 按照单词逐个读取逐行读取逐个字符读取 的方式读取我们刚刚创建的 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();
}

以上三种方式打印的内容分别如下图(第三种方式太长了,没有完全截图,能理解逐个字符就行):

C++——字符串、读写文件、结构体、枚举,C++,c++,状态模式,开发语言

C++——字符串、读写文件、结构体、枚举,C++,c++,状态模式,开发语言

C++——字符串、读写文件、结构体、枚举,C++,c++,状态模式,开发语言


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 文件,即可看到如下内容:

C++——字符串、读写文件、结构体、枚举,C++,c++,状态模式,开发语言


三、结构体

结构体是用户自定义的复合数据结构,里面可以包含多种不同类型的数据对象。

下面的代码进行了 定义结构体创建数据对象并做初始化定义和遍历结构体数组 等操作,代码很简单,类似于类的定义和创建,一睹为快!

#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++——字符串、读写文件、结构体、枚举,C++,c++,状态模式,开发语言


四、 枚举

当遇到某个数据对象只能取有限个常量值的情况时(比如一周七天),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; // 0
	cout << "w3 = " << w3 << endl; // 3
	cout << "w4 = " << w4 << endl; // 10
	cout << "w5 = " << w5 << endl; // 11

	cin.get();
}

总结

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

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


参考资料:

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

C++——字符串、读写文件、结构体、枚举,C++,c++,状态模式,开发语言文章来源地址https://www.toymoban.com/news/detail-848452.html


到了这里,关于C++——字符串、读写文件、结构体、枚举的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • c++简单做一个文件变长储存(自己封装字符串类)

    用户信息写到文件是变长方式; 从文件上读取到内存,也是变长方式 用到了三个类; ** 用户信息类 ClassStu ** 自封装字符串类MyStr ** 文件类 源码如下 使用如下: ClassStu MyStr cFile classstu Mystr cFile

    2024年01月17日
    浏览(34)
  • 如何从Java中的字符串值中获取枚举值

    说我有一个枚举,它只是 我想找到一个字符串的枚举值,例如 “A” 这将是 Blah.A。怎么可能做到这一点? Enum.valueOf() 是我需要的方法吗?如果是这样,我将如何使用它? 保持自己快人一步,享受全网独家提供的一站式外包任务、远程工作、创意产品订阅服务–huntsbot.com 是的

    2024年02月16日
    浏览(54)
  • 【每日一题Day217】LC2451差值数组不同的字符串 | 枚举+变量记录

    给你一个字符串数组 words ,每一个字符串长度都相同,令所有字符串的长度都为 n 。 每个字符串 words[i] 可以被转化为一个长度为 n - 1 的 差值整数数组 difference[i] ,其中对于 0 = j = n - 2 有 difference[i][j] = words[i][j+1] - words[i][j] 。注意两个字母的差值定义为它们在字母表中 位置

    2024年02月07日
    浏览(47)
  • 【数据结构-字符串 三】【栈的应用】字符串解码

    废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是【字符串转换】,使用【字符串】这个基本的数据结构来实现,这个高频题的站点是: CodeTop ,筛选条件为: 目标公司+最近一年+出现频率排序 ,由高到低的去 牛客TOP101 去找,只有两个

    2024年02月07日
    浏览(82)
  • 汇编和c++初学,c++字符串加整型,导致的字符串偏移

    从汇编角度分析\\\"helloworld\\\"+1 “helloworld”+1对应 eax地址偏移加了1, 最终取的内存偏移地址,所以此时的test是elloword,后面调用iostream封装的字符串相加方法。 最终结果是 做的前端,如果是js,1会转换为字符串后相加,最近刚学c++和汇编,目前还是一知半解的,如有不对,请指

    2024年01月16日
    浏览(48)
  • C++将字符串中包含指定字符串范围内的字符串全部替换

    将指定字符串所在的范围之内的字符串全部替换为指定的字符串。如: 源字符串: 转换后的字符串: 或者转换为: 本文就是记录一种将上述字符串替换成功的方法。其中转换之后的第一个字符串,实际上是将原有字符串中 “$START$” 和 “$END$” 替换为 “” (空字符串);

    2024年02月07日
    浏览(57)
  • C++基础容器 -- C的数组和字符串和C++的数组和字符串

    数组 概念 代表内存里一组连续的同类型存储区 可以用来把多个存储区合并成一个整体 数组声明 int arr[10]; 类型名称int表述数组里面所有元素的类型 名称arr是数组的名称 整数10表示数组里面的元素个数 数组里元素个数不可以改变 使用 每个元素都有下标,通过下标可以直接访

    2024年02月06日
    浏览(62)
  • .net通过S7.net读写西门子PLC中,字符串,bool,整数,小数及byte型

    注:.net中通过TCP/IP方式通过S7.net.dll动态库,连接到西门子PLC,西门子程序中许勾选优化块,程序读取需要 db块号+偏移量 一。使用VS项目,在项目中添加S7.net动态库 代码中引用S7.net动态库 using S7.Net; 实例化PLC服务名 /// /// 实例化PLC /// Plc S71500; 连接PLC按钮时间编写: 以上代码

    2023年04月15日
    浏览(97)
  • c++读取字符串字符时出错

    这是我做的一个c++爬虫程序但是在抓取网页的时候string类型传递出现了问题 以下是图片代码  url的值是 \\\"http://desk.zol.com.cn/\\\" 我不知道为什么数据传递会出问题 请大佬指教 后面重新启动一遍编译器查一查断点有突然没问题了 ,真是个玄学的问题。我还以为是mallco出问题了

    2024年02月12日
    浏览(71)
  • c++ 字符串去除指定的字符

    使用 std::string 的 erase 和 find 方法 循环查找并擦除特定字符,逐个字符地搜索并移除字符 使用 std::remove 算法和 erase std::remove 函数可以用来移除指定的字符,并返回一个新的“逻辑”结束位置。实际的字符串内容没有改变,但所有需要保留的字符已经被移动到字符串的开始位

    2024年03月17日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包