C++ 标准模板库--string使用方法

一、关于string

1.本质:将常用函数功能进行封装的字符数组。
2.优点:使用更加方便,且不容易发生错误。

二、使用string

1.需要引用的头文件

#include<string>       // !!!注意和 string.h 不是同一个头文件!!!
using namespace std;

 2.定义

string str;

//定义并赋值
string str = "abcd";

3.访问

3.1通过下标访问(简单)

//输出一个字符
printf("%c",&str[i]);

如果要读入和输出整个字符串,要用cin cout:

#include<iostream>
#include<string>

using namespace std;

int main(){
	string str;
	cin >> str;
	cout << str;

// 如果必须要用 printf 输出 ,则应该采用以下方法。
    printf("%s",str.c_str());    //将 string 型使用 c_str() 变成字符数组。
	return 0;
}

3.2通过迭代器访问

#include<iostream>
#include<string>

using namespace std;

int main(){
	string str;
	cin >> str;
	for(string::iterator it = str.begin(); it != str.end();it++){
		printf("%c",*it);
	}
	return 0;
}

4.常用函数

4.1 “ + = ”使用

#include<iostream>
#include<string>

using namespace std;

int main(){
	string str1 = "abc",str2 = "xyz",str3;
	str3 = str1 + str2;
	str1 +=  str2;
	cout << str1 << endl;
	cout << str3 << endl;
	return 0;
}

// 输出结果为 abcxyz
//           abcxyz 

4.2 比较

两个 string 可以直接使用 < = > 的运算符进行比较,比较规则是基于字典序。

if(str1 > str2) {}
if(str1 != str2) {}
if(str1 <= str2) {}

4.3length size

int len = str.length();
int size = str.size();

//结果相同

4.4insert()

两个参数使用方法:

//在 str 3 号位插入 str2.
str.insert(3,str2);
//在 str 2 号位直接插入 sxy 字符串
str.insert(2,"sxy");

三个参数使用方法:

string str1 = "abc",str2 = "xyz";
str1.insert(str1.begin(),str2.begin(),str2.end());
//在 str1 中 0 号位插入 str2 中 0号位 到 最后一个字符,区间为左开右闭。

4.5erase()

删除一个元素:

st.erase(str.begin() + 4);
// 删除 4 号位。

删除一个区间的元素:

str.erase(str.begin() + 1 , str.begin() + 3);
//删除 str 中 1、2 号位,区间左开右闭。

str.erase(1,3);
//删除从 1 号位开始的 3 个,即删除 1 2 3 号位。

4.6clear

//清除所有元素。
str.clear();

4.7substr()

string i = str.substr(4,4);
// 返回从 4 号位开始,长度为 4 的子串。

4.8find

int i = str.find(str1);
//在 str 中匹配 str1 若匹配成功,则返回第一次出现的位置,若失败,则返回-1。
int o = str.find(str1,4);
//在 str 中从 4 号位开始匹配 str , 返回值与上面相同。

4.9replace()

//把 str 从 2 号位开始,长度为 2 的子串,替换为 str2。
str.replce(2,2,str2);
//把 str 迭代器为[it1 , it 2)范围内的子串,替换为 str2。
str.replace(str.begin(),str.begin() + 2 , str2);
发布了17 篇原创文章 · 获赞 4 · 访问量 445

猜你喜欢

转载自blog.csdn.net/qq_39117553/article/details/104914474