介绍一下 C++ String 变量与 <string.h> 库。

正片

String变量类型

String变量类型即字符串变量类型,有关它的初始化:

1
2
3
4
5
string str;                   //初始化一个str变量,默认为""
string str2 = "Hello World"; //初始化一个str2并赋值"Hello World"
string str3 = str2; //初始化一个str3并拷贝str2
string str4(10,'s'); //初始化一个str4并给其赋值10个's',即'ssssssssss'
string str5("string"); //初始化一个str5变量并赋值为"string"

String变量类型可以当作一个char数组来使用,但它不是char数组,如果您想转换成char*字符串,请向下翻阅 string.c_str() 函数。

1
2
string str="abcdefg";
cout<<str[3]<<endl;

输出为

1
d
  • string变量的加法

c++的string类型变量能够使用’+’相加,返回结果是两者拼接后的string字符串。

1
2
3
string str=Hello;
string str2=World;
cout<<str+" "+str2<<endl;

输出为

1
Hello World

String.h 库 常用函数

string to_string()

我想第一个就介绍它,to_string()是我们经常且频繁会用到的一个函数,它用于将数值转换为string字符串,并返回转换后的string字符串。

  • string to_string()的参数
    1
    2
    3
    4
    5
    6
    7
    8
    9
    string to_string (int val);
    string to_string (long val);
    string to_string (long long val);
    string to_string (unsigned val);
    string to_string (unsigned long val);
    string to_string (unsigned long long val);
    string to_string (float val);
    string to_string (double val);
    string to_string (long double val);
    应用:
    1
    2
    string str=to_string(123) + "abc";
    cout<<str<<endl;
    输出为
    1
    123abc

double stod(string str)、float stof(string str)、int stoi(string str)

这几个也是非常重要的函数,并也是经常使用的函数。具体作用为将str转换为相应的数值类型。

1
2
cout<<stod("13.4")<<endl;
cout<<stoi("13")+stof("13.4")<<endl;

输出为

1
2
13.4
26.4

除了标题中的几个,还有long long stoll(string str)、unsigned stoul(string str)等等,不再赘述。

void swap(string a , string b)

将a字符串与b字符串交换。

1
2
3
4
string a="abc";
string b="123";
swap(a,b);
cout<< a <<" "<< b <<ndl;

输出为

1
123 abc

string strrev(string str)

倒转字符串中的内容

1
2
string str="abc";
cout<< strrev(str) <<ndl;

输出为

1
cba

String 方法

iterator string.begin()

指向string类型变量的首位字符迭代器

iterator string.end()

指向string类型变量的末位字符迭代器的后一位。

int string.find()

寻找来自string类型变量的某位字符或字符串位置,返回其下标。

1
2
string.find(char chr);
string.find(char chr, int n);

例如

1
2
3
string str="abcabc";
cout<<str.find('a')<<endl;
cout<<str.find('b',2);

输出为

1
2
0
4

string string.substr()

截取字符串。

1
2
3
string string.substr()  //不写参数默认返回string
string string.substr(int n) //从string下标为n开始的位置向后截取到尾返回
string string.substr(int n1,int n2) //从string下标为n1开始向后截取到n2

例如

1
2
3
4
string str="abcdefg";
cout<<str.substr()<<endl;
cout<<str.substr(2)<<endl;
cout<<str.substr(2,4)<<endl;

输出为

1
2
3
abcdefg
cdefg
cde

string string.erase()

删除字符串

1
2
3
4
string string.erase(int n); //从string下标为n开始的位置向后删除到尾返回
string string.erasee(int n1,int n2); //从string中删除n1到n2的字符串
iterator string.erasee(iterator n);//从迭代器n指向的位置向后删除到尾返回
iterator string.erasee(iterator n1,iterator n2);//从string中删除n1迭代器到n2迭代器指向的字符串

例如

1
2
3
4
string str="abcdefg";
cout<<str.erase(str.begin()+1)<<endl;
cout<<str.erase(str.begin()+1,str.end()-3)<<endl;
cout<<str.erase(2,4)<<endl;

输出为

1
2
3
a
afg
abfg

char *string.c_char()

将string字符串转换为经典C中的char*字符串


先更新那么多,实在是记不太清楚,有些成员函数可能有遗漏,如有大佬发现问题麻烦在评论区留言,我将将其订正,如果在以后想起来了有关于string的用法我还会更新到这篇文章中。