C++:STL string(一)

本次编译环境为vs2022

文章目录


前言

我们了解完STL后 开始初步学习 STL里面的string类的内容

一.标准库中的string类

https://cplusplus.com/reference/string/string/?kw=string

这个网址可以看到string类里的内容

1.auto 范围for

在早期C/C++中auto的含义是:使用auto修饰的变量,是具有自动存储器的局部变量,后来这个不重要了。C++11中,标准委员会变废为宝赋予了auto全新的含义即:auto不再是一个存储类型指示符,而是作为一个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得。

用auto声明指针类型时,用auto和auto*没有任何区别,但用auto声明引用类型时则必须加&当在同一行声明多个变量时,这些变量必须是相同的类型,否则编译器将会报错,因为编译器实际只对第一个类型进行推导,然后用推导出来的类型定义其他变量。

auto不能作为函数的参数,可以做返回值,但是建议谨慎使用

auto不能直接用来声明数组

通过代码简单了解

cpp 复制代码
int main()
{
	int arr[] = { 1,2,3,4,5 };
	for (auto& e : arr)
		e *= 2;
	for (auto e : arr)
		cout << e << " " << endl;

	string str("hello world");
	for (auto ch : str)
	{
		cout << ch << " ";
	}
	cout << endl;
	return 0;
}

输出是这样的

二.string类的模拟实现

cpp 复制代码
class string
{
public:
	string(const char* str)
	{
		if (nullptr == str)
		{
			return;
		}
		_str = new char[strlen(str) + 1];
		strcpy(_str, str);
	}
	string(const string& s)
		:_str(nullptr)
	{
		string tmp(s._str);
		swap(_str, tmp._str);
	}
	string& operator=(string s)
	{
		swap(_str, s._str);
		return *this;
	}
	~string()
	{
		if (_str)
		{
			delete[] _str;
			_str = nullptr;
		}
	}
private:
	char* _str;
};

最简单的string类的书写

赋值 构造 析构等

总结

简单的了解了一下string的内容 明天我们将扩展string类并给出完整且流利的讲解!

相关推荐
枫叶林FYL1 分钟前
【强化学习】2 大规模并行强化学习中的耦合策略优化:受控多样性驱动的样本高效探索
开发语言·php
chao1898443 分钟前
基于MATLAB的音频信号AM调制与解调实现
开发语言·matlab·音视频
雨落在了我的手上5 分钟前
初识java(八):数组的定义与使用
java·开发语言
贵州晓智信息科技5 分钟前
曼德勃罗集的 Three.js 实现
开发语言·javascript·ecmascript
xiaoshuaishuai86 分钟前
C# CUDA 到 OpenCL 迁移
开发语言·windows·c#
闻缺陷则喜何志丹7 分钟前
【图论 树 启发式合并】P7165 [COCI2020-2021#1] Papričice|普及+
c++·算法·启发式算法·图论··洛谷
AI科技星7 分钟前
基于平行素数对等腰梯形网格拓扑的完备性证明哥德巴赫猜想1+1
c语言·开发语言·网络·量子计算·agi
聆风吟º8 分钟前
【C标准库】深入理解C语言 isdigit函数详解:判断字符是否为数字
c语言·开发语言·库函数·isdigit
alexwang2118 分钟前
AT_abc458_d [ABC458D] Chalkboard Median题解
c++·算法·题解·atcoder
故事和你919 分钟前
洛谷-【图论2-4】连通性问题1
开发语言·数据结构·c++·算法·动态规划·图论