【C++ —— string类】

本文详细介绍了C++标准库中的std::string类的定义方式、构造函数、插入、删除操作,以及大小、容量管理、字符串拼接、查找、比较、替换、交换、元素访问和流处理的相关内容,包括getline函数的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1.string 定义方式

在这里插入图片描述

1.1 string( )构造一个空字符串

void String_test()
{
   
	std::sring s1;
}

在这里插入图片描述

1.2 string( const string& str)

拷贝构造一份str内的字符串
在这里插入图片描述

1.3string(const string& str, size_t pos, size_t len = npos)

使用在pos个字符后len个长度常量字符串初始化,如果len不输入的化,使用缺省值npos,可以理解为直接从字符串pos位置,直到\0停止。
npos的值是由-1转化正无符号整数,也就是int型最大的整数值:
在这里插入图片描述

1.4 string(const char* s)

string使用常量字符串初始化

void String_test()
{
   
	std::string s2("hello");
}

在这里插入图片描述
我们在来看以下代码,这个代码也是能够初始化的。

void String_test()
{
   
	std::string s2 = "hello";
}

为什么呢?
在这里插入图片描述
这里string有一个带参的构造函数,我们用常量字符串"hello"给s2赋值时:1.
先构造了一个string类型的临时对象,传入常量字符串,然后s2再对临时对象拷贝构造。不过这里因为一个构造+拷贝构造被编译器直接优化成了一个构造函数。
本质其实就是隐式类型的转换。(单参数的构造函数支持隐式类型转换)
在这里插入图片描述
所以string s2 = "hello"string s2("hello")都是一样的。

1.5 string (const char* s, size_t n)

复制s所指向的字符序列的前n个字符

std::string s4("goat",2);

在这里插入图片描述

1.6 string (size_t n, char c)

用n个c字符初始化

std::string s5(6,'a');

在这里插入图片描述

2. string插入

2.1push_back尾插

格式:

void push_back (char c);
int main()
{
   
	string s;
	s.push_back('1');
	s.push_back('2'); 
	s.push_back('3');
	s.push_back('4');
	return 0;
}

使用push_back插入。在vs2022环境下当capacity满时以1.5倍扩容。
在这里插入图片描述

2.2 insert插入

常用insert插入格式:

 string& insert (size_t pos, const string& str);//在pos位置插入str
 string& insert (size_t pos, const char* s);//在pos位置插入s指向的字符串
 iterator insert (iterator p, char c);//在迭代器p的位置插入字符

例子:

int main()
{
   
	string s("G");
	string s1("a");
	s.insert(1, "o");//Go,在pos位置上插入字符串

	s.insert(2, s1);//Goa 在pos位置插入string对象

	s.insert(s.end(), 't' );//迭代器插入t。Goat
	
	return 0;


}

在这里插入图片描述

3. string的删除

3.1 pop_back尾删

格式:


void pop_back();

例子:

int main
{
   
	string s("GAOT");
	
	s.pop_back();
	cout << s << endl;//GAO
	return 0;
}

3.2 erase删除

格式:

string& erase (size_t pos = 0, size_t len = npos);//删除pos位置后len个字符
iterator erase (iterator p)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值