首页 > 其他分享 >string类

string类

时间:2024-04-27 23:12:25浏览次数:18  
标签:字符 string str 字符串 world hello

string类文档
与其他的标准库类型一样,想要使用string类型,必须包含相关的头文件。且string类是位于std命名空间中的。但在实际的项目中,最好避免在头文件中使用using namespace std;,因为这样会引入整个std命名空间,可能会导致命名冲突。

#include<string>
using namespace std;

常用构造函数

函数名 功能
string() 创建一个空字符串
string(const char* s) 使用c风格字符串初始化字符串
string(const string& str) 拷贝构造函数
void test() {
	string s1; //创建一个空字符串
	string s2(&quot;hello world&quot;); //使用 hello world 初始化字符串 s2
	string s3(s2); //拷贝构造 s3

}##

string类对象的修改

函数名 功能
operator+= 将一个字符串连接到另一个字符串的末尾
c_str 返回c格式字符串
find 从pos位置往后找字符c,返回该字符在字符串中的位置
substr 在str中从pos位置开始,截取n个字符,并将其返回
rfind 从pos位置往前找字符c,返回该字符在字符串中的位置
//operator+=
int main() {
	string s1("hello ");
	string s2("world");
	s1 += s2;
	cout << s1 << endl;
}
//c_str
int main() {
	string str("hello world");

	cout << str << endl;
	cout << str.c_str() << endl;

	str += '\0';
	str += "world";

	cout << str << endl; // 一直输出到末尾
	cout << str.c_str() << endl; //遇到 \0 就结束
}
int main() {
	//将网址分割
	string url("https://cplusplus.com/reference/string/string/find/");

	size_t i = url.find(':');
	cout << url.substr(0, i) << endl;

	size_t j = url.find('/', i + 3);
	cout << url.substr(i + 3, j - (i + 3)) << endl;

	cout << url.substr(j + 1) << endl;
}

string类对象的访问及遍历

函数名 功能
operator[] 通过下标访问单个字符
迭代器
范围for
int main() {
	string s1("hello world");

	//1.operator[]
	cout << s1[2] << endl;

	//2.迭代器
		//将 s1 字符的AscII码减一
	string s3(s1);
	string::iterator it = s3.begin();
	while (it != s3.end()) {
		*it -= 1;
		++it;
	}
	cout << s3 << endl;
		//反向迭代器
	string s4(s1);
	string::reverse_iterator rit = s4.rbegin();
	while (rit != s4.rend()) {
		cout << *rit << endl;
		++rit;
	}

	//3.范围 for()
	for (auto s5 : s1) {
		cout << s5 << endl;
	}
}

string类对象的容量

函数名 功能
size 返回字符串有效字符长度
capacity 返回字符串容量
empty 检查字符串是否为空,是返回true,否返回false
clear 清空字符串
reserve 为字符串预留空间
resize 将有效字符的个数改成n个,多出的空间用字符c填充
void test() {
	string str("hello world");
	cout << str.size() << endl;
	cout << str.capacity() << endl;
	cout << str.empty() << endl;

	string str2(str);
	str2.clear();//只将 size 清零,不改变 capacity 的大小

	string str3(str);
	str3.reserve(10);//当设置的空间小于所需要的空间时,会自动增容
	//cout << str3.capacity() << endl;
	//cout << str3 << endl;

	//str3.resize(50);// resize(n);当字符数大于n时,只显示n个字符;当字符数小于n时,会以 \0 进行填充
	str3.resize(50, 'k');//使用指定字符 'k' 进行填充
	cout << str3 << endl;
}

标签:字符,string,str,字符串,world,hello
From: https://www.cnblogs.com/zhiheng-/p/18162729

相关文章

  • golang strings.Join的用法
    在Go语言中,strings.Join函数用于将一个字符串切片([]string)连接成一个单独的字符串,并且可以在它们之间插入一个指定的分隔符。这个函数是strings包中的一部分,因此在使用之前需要先导入这个包。以下是strings.Join函数的基本用法:packagemainimport("fmt""stri......
  • ABC347B Substring
    题目描述给你一个由小写英文字母组成的字符串S,S有多少个不同的非空子串?子串是连续的子序列。例如,xxx是yxxxy的子串,但不是xxyxx的子串。数据范围:S是长度在1和100之间(含)的字符串,由小写英文字母组成。题解我认为这道题放在普及组的话,非常适合放在第一题和第二题之间,......
  • 顺序栈十进制转十六进制,还有键盘输入一个包括 '(' 和 ')' 的字符串string ,判断字符串
    设计一个进制转换程序,使用顺序栈设计一个把十进制数转换为十六进制数的接口,实现当通过键盘输入一个非负的十进制数,可以在终端输出对应的十六进制数。*@brief :十进制转十六进制*@param :@Segstackt*Manager:地址* @unsignedintData:转换的值*@re......
  • 如何在 C# 中使用 String.Split 分隔字符串
    一直以为split是用来分隔字符的,没想到还可以分隔数组。让程序变得更简单。微软官网的介绍在此记录下。https://learn.microsoft.com/zh-cn/dotnet/csharp/how-to/parse-strings-using-split 1、分单个字符stringphrase="Thequickbrownfoxjumpsoverthelazydog.";......
  • 【Qt 专栏】QString::arg()函数
    原文链接:https://blog.csdn.net/Gnar_w/article/details/134966919作者:Gnar_w  (CSDN) 一、说明在QT的QString中,arg方法类似于C中的printf中使用的格式输出符(仅有些许类似)。二、使用有以下方式:使用arg(str1,str2,str3)这种方法进行替换。使用arg(str1).arg(str2).arg(......
  • [题解][2021浙江CCPC] String Freshman
    题目描述有一份错误的字符串匹配算法,计算S串里有几个T串(只要有一个元素不同,则视为不同的串)。现在输入T串,判断能否构造S串让该算法不通过。intFind_Answer(){intj=1,ans=0;for(inti=1;i<=n;i++){if(S[i]!=T[j])j=1;if(S[......
  • 【Qt 专栏】QByteArray详解(QByteArray 与 QString的区别)
    本文转自:《Qt编程指南》    作者:奇先生Qt编程指南,Qt新手教程,QtProgrammingGuide本节学习QByteArray的两种用法,第一种作为字符串处理类,类似QString,但QByteArray内部字符编码不确定,所以要慎用。第二种是作为纯的字节数组,里面可以包含多个'\0',经常用于网络数据的......
  • Java源码阅读-String中的private final char value[];
    /**Thevalueisusedforcharacterstorage.*/privatefinalcharvalue[];在Java的源码中是这样来实现String对字符串的存储的首先使用final关键字来修饰这个变量,来保证value不会被重写,确保字符串的内容在创建后不会被修改,从而保持字符串的不可变性。final是......
  • Java源码阅读-String.startsWith(String prefix, int toffset)
    /***Testsifthesubstringofthisstringbeginningatthe*specifiedindexstartswiththespecifiedprefix.**@paramprefixtheprefix.*@paramtoffsetwheretobeginlookinginthisstring.*@return{@codetrue}ifthecharacter......
  • ToStringBuilder与直接toString的区别
    @OverridepublicStringtoString(){returnnewToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE).append("jobId",getJobId()).append("jobName",getJobName()).append("jobGroup&q......