String
C++string类常用方法
1、string(const char *s) :将 string 对象初始化为 s 指向的字符串
string str("hello");
2、string(size_type n,char c) :创建一个包含 n 个元素的 string 对象,其中每个元素都被初始化为字符 c
string str(10, 'a');
3、string(const string &str) :将一个 string 对象初始化为 string 对象 str(复制构造函数)
string str("abcde");
string str2(str);
或者
string str("hello!");
string str2;
str2 = str;
4、获取string对象的长度,使用str.size()或str.length().
string str("hello!");
int len1 = str.size();
int len2 = str.length();
5、string 对象的拼接
string str1("hello");
string str2("world");
string str3 = str1 + str2;
6、使用 += 来在一个 string 对象后面附加一个 string 对象、字符
String str("hello");
string str2("world");
str += str2;
str += 'a';
str += "abcd";
7、string.push_back() 函数来在一个 string 对象后面附加一个字符
string str("hello");
char ch = 'a';
str.push_back(ch);
8、对于string对象的比较,可以直接使用关系运算符。
C ++字符串支持常见的比较操作符(>,>=,<,<=,==,!=),甚至支持string与C-string的比较(如 str<”hello”)。
在使用>,>=,<,<=这些操作符的时候是根据“当前字符特性”将字符按字典顺序进行逐一得 比较。字典排序靠前的字符小,
比较的顺序是从前向后比较,遇到不相等的字符就按这个位置上的两个字符的比较结果确定两个字符串的大小(前面减后面)
同时,string (“aaaa”) <string(aaaaa)。
string str1("abcd");
string str2("abcd");
if(str1 == str2)
break;
9、string对象的比较也可以使用string.compare() 方法
int compare(const string&str) const;
int compare(size_t pos,size_t len,const string&str)const;
int compare(size_t pos,size_t len,const string&str, size_t subpos,size_t sublen)const;
int compare(const char * s)const;
int compare(size_t pos,size_t len,const char * s)const;
int compare(size_t pos,size_t len,const char * s,size_t n)const;
//相等为0,不等-1
// example
string str1("hello world");
stringstr2("hello boy");
str.compare(6, 3, str2, 6, 3);//(1位置,1长度,2字符串,2位置,2长度)
Or
str1.compare(str2);
10、使用 string.substr() 函数来获取子串
string str("hello");
string str2 = str.substr(3,2)
11、使用 string.find() 方法查找字符
// 从字符串的 pos 位置开始(若不指定 pos 的值,则默认从索引 0 处开始),查找子字符串 str。
使用方法:如在string1中查找string2,string1.find(string2);返回值为string2第一次在string1中出现的位置。
若希望在特定位置开始查找,可使用 string1.find(string2,location);
如果找不到,则返回值为string::npos ,即对于string,通过a.find(val)==string::npos来做判断是否查找成功
//eg.
for (int beg = 0;; beg++)
{
beg = s.find("can you", beg);//beg=s.find(“me”,beg);指的是如果找到me,将beg设为me在字符串中第一次出现的位置
if (beg == -1)break;
if ((beg == 0 || s[beg - 1]<'0' || s[beg - 1]>'9'&&s[beg - 1]<'A' || s[beg - 1]>'Z'&&s[beg - 1]<'a' || s[beg - 1]>'z') && (beg + 7 == s.length() || s[beg + 7]<'0' || s[beg + 7]>'9'&&s[beg + 7]<'A' || s[beg + 7]>'Z'&&s[beg + 7]<'a' || s[beg + 7]>'z'))
{
s.replace(beg, 7, "A can");
}
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{
vector<int> v;
for(int i=0;i<5;i++){
v.push_back(i);
}
if(find(v.begin(),v.end(),4)!=v.end()){
printf("找到的下标为%d\n",find(v.begin(),v.end(),4)-v.begin()); //获取元素的下标
}else{
printf("该元素不存在\n");
}
return 0;
}
12、string.rfind() 与 string.find() 方法类似,只是查找顺序不一样, string.rfind() 是从指定位置 pos (默认为字符串末尾)开始向前查找,直到字符串的首部,并返回第一次查找到匹配项时匹配项首字符的索引。换句话说,就是查找子字符串或字符最后一次出现的位置。
13、string.find_first_of() 方法在字符串中从指定位置开始向后(默认为索引 0 处)查找参数中任何一个字符首次出现的位置
string str("hello world");
int pos = str.find_first_of("abcde");
int pos = str.find_first_of("abcde", 1); // 第二个参数为位置
14、string.find_last_of()
方法在字符串中查找参数中任何一个字符最后一次出现的位置
15、string.find_first_not_of()
方法在字符串中查找第一个不包含在参数中的字符
16、string.find_last_not_of()
方法在字符串中查找最后一个不包含在参数中的字符
17、使用 string.insert() 进行插入操作
string& insert(size_t pos,const string&str);
// 在位置 pos 处插入字符串 str
string& insert(size_t pos,const string&str,size_t subpos,size_t sublen);
// 在位置 pos 处插入字符串 str 的从位置 subpos 处开始的 sublen 个字符
string& insert(size_t pos,const char * s);
// 在位置 pos 处插入字符串 s
string& insert(size_t pos,const char * s,size_t n);
// 在位置 pos 处插入字符串 s 的前 n 个字符
string& insert(size_t pos,size_t n,char c);
// 在位置 pos 处插入 n 个字符 c
18、使用 string.erase() 进行元素删除操作
str.erase(开始位置,长度);
str.erase(unique(str.begin(),str.end()),str.end());
19、使用 getline() 函数来获取 string 输入(若getline前一行还有数据记得getchar)
string str;
getline(cin, str);
20、使用 string.empty() 函数判断字符串是否为空
21、使用 string.swap() 函数交换两个字符串
string str1 = "hello";
string str2 = "HELLO";
str1.swap(str2);
22、string.back()获取或修改字符串最后一个字符
string str("abcd");
char b = str.back();
str.back() = 'e';
23、string.front()
获取或修改字符串第一个字符
24、string.pop_back()
删除字符串最后一个元素
25、isalnum(str[i])
判断输入的字符是否为字母或者数字,即是否在 “A – Z” 或者 “a – z” 或者”0 – 9”之间
26、isdigit()
判断输入的字符是否是数字
28、isalpha()
判断输入的字符是否为字母,即是否在 “A – Z” 或者 “a – z”之间
29、atoll(str.c_str());//转换字符串为数字 返回一个数字
long long num=atoll(str.c_str());
补
if(str.empty()) return 0;
long long num=stoi(str); //string 类型
string num = to_string(c); //int -》 string
30、str.replace(开始位置,长度,”替换的字符”)