String用法总结
- 一、String字符串
- 1、头文件
- 2、String的创建和初始化
- 3、String的读写操作
- (1)使用cin读取键盘输入的值
- (2)使用getline()读取行
- 4、字符串的拼接操作
- 5、字符串的比较操作
- (1) 比较运算符(>、<、==)
- (2) compare()
- (3) strcmp(str1,str2)
- 6、获取字符串的长度
- 7、获取子字符串
- 8、获取字符串中的某个字符
笔者在刷题的过程中,发现部分语法容易遗忘,因此本系列刷题笔记想要记录一些常用语法,便于复习巩固,本系列内容根据刷题进度同步更新。
一、String字符串
1、头文件
#include <string>
2、String的创建和初始化
string str;//定义字符串变量
string str1 = "hello";//定义字符串变量同时赋初值
str = str1;//把str1复制给str
string str2(3, 'a');//创建一个包含n个元素的字符串,每个元素初始化为指定元素,输出结果为“aaa”
string str3("value");//定义字符串变量同时赋初值
string str4(str3);//把str3赋值给str4
3、String的读写操作
(1)使用cin读取键盘输入的值
string对象会自动忽略开头的空白(既空格、换行符、制表符等),并从第一个真正的字符开始读入,遇到“空格”、“TAB”、“回车”结束。
string str;//定义字符串变量
cin >> str; //使用cin对字符串进行赋值
cout << str << endl;//使用cout输出字符串
(2)使用getline()读取行
getline的函数格式:getline(cin,string对象)
getline的作用是读取一整行,直到遇到换行符才停止读取,期间能读取像空格、Tab等的空白符。
string str1;
getline(cin, str1);//读取一行为str1赋值
cout << str1 << endl;
注意:getline函数和cin一样,也会返回它的流参数,也就是cin,所以可以用getline循环读取一行。
string str1;
while(getline(cin, str1))//循环读取一行为str1赋值
cout << str1 << endl;
4、字符串的拼接操作
连接字符串 str2 到字符串 str1 的末尾。c++兼容C语言的strcat()函数。
string str1 = "Hello";
string str2 = "world";
strcat(str1,str2);//C语言中使用strcat()对字符串进行拼接
str2=str1+str2;//C++中使用“+”号对字符串进行拼接
str2+=str1;相当于str2 = str2 + str1
str1.append(str2);//把str2加到str1后面
当string对象和字符或字符串字面值相加时,必须确保+号的两侧的运算对象至少有一个string。
string str3 = str1 + ','+ str2+ '\n';//string对象与字符相加
5、字符串的比较操作
string可以使用比较运算符、compare()或者C语言中的strcmp(s1, s2)函数进行比较操作。只要有一个字符不等或者某一个字符串多一个字符,那么string就不相等。
(1) 比较运算符(>、<、==)
if(str1 > str2)
cout << str1 << "大于" << endl;
else if(str1 < str2)
cout << str1 << "小于" << endl;
else
cout << str1 << "等于" << endl;
(2) compare()
string对象中的成员函数compare()可以比较字符串。
若 str=指定的字符串,str.compare()返回0
若 str>指定的字符串,str.compare()返回正数
若 str<指定的字符串,str.compare()返回负数
int ret = str1.compare(str2);//比较str1和str2
(3) strcmp(str1,str2)
strcmp(str1,str2)函数是根据ACSII码的值来比较两个字符串的;strcmp(str1,str2)函数首先将str1字符串的第一个字符值减去str2第一个字符,若差值为零则继续比较下去;若差值不为零,则返回差值。
若 str1 和 sttr2 是相同的,则返回 0
若 str1<str2 则返回值小于 0
若 str1>str2 则返回值大于 0
int ret = strcmp(str1, str2);
6、获取字符串的长度
对于string对象 ,str.length()和str.size()是同义词,返回字符串中字符的长度,不包括‘/0’。
除此之外,size()函数还可以获取vector类型的长度。
int len1 = str.size();//获取字符串的长度
int len2 = str.length();//获取字符串的长度
7、获取子字符串
string s = str.substr(n,m);//从str的第n个字符开始取m个字符
8、获取字符串中的某个字符
char ch1 = str[n];//获取字符串str中的第n个字符
char ch2 = str.at(n);//获取字符串str中的第n个字符