C++ string用法详解

在使用string类之前,需要包含以下头文件:

#include 

1、声明一个字符串变量:

1)  string s;  // 生成一个空字符串s 
2)  string s(str) ; // 拷贝构造函数生成str的复制品 
3)  string s(str, stridx);  // 将字符串str内"始于位置stridx"的部分当作字符串的初值 
4)  string s(str, stridx, strlen) ; // 将字符串str内"始于stridx且长度顶多strlen"的部分作为字符串的初值 
5)  string s(cstr) ;  // 将C字符串(以NULL结束)作为s的初值 
6)  string s(chars, chars_len) ;  // 将C字符串前chars_len个字符作为字符串s的初值。 
7)  string s(num, ‘c’) ;  // 生成一个字符串,包含num个c字符 
8)  string s(“value”);  string s=“value”;  // 将s初始化为一个字符串字面值副本
9)  string s(begin, end);  // 以区间begin/end(不包含end)内的字符作为字符串s的初值 
10) s.~string();  //销毁所有字符,释放内存 

2、string与C的比较:

string串要取得其中某一个字符,和传统的C字符串一样,可以用s[i]的方式取得。比较不一样的是如果s有三个字符,传统C的字符串的s[3]是’\0’字符,但是C++的string则是只到s[2]这个字符而已。

3、string的操作:

string s;
1)  s.empty();  // s为空串 返回true
2)  s.size();  // 返回s中字符个数 类型应为:string::size_type
    s.length();  // 返回s中字符个数
3)  s[n];  // 从0开始相当于下标访问
4)  s1+s2;  // 把s1和s2连接成新串 返回新串 
5)  s1=s2;  // 把s1替换为s2的副本
6)  v1==v2;  // 比较,相等返回true
7)  `!=, <, <=, >, >=`  //惯有操作 任何一个大写字母都小于任意的小写字母

当进行string对象和字符串字面值混合连接操作时,+操作符的左右操作数必须至少有一个是string类型的:

string s1(“hello”);
string s3=s1+”world”;  //合法操作
string s4=”hello”+”world”;  //非法操作:两个字符串字面值相加

4、查找子串

s.find(t);  //查找字符串t是否是s的子串

如果是则返回第一次匹配的地址,不是则返回-1(string::npos )。
返回值的类型为int类型,返回的是字符串的下标。

5、begin()与end()函数

begin()函数返回一个迭代器,指向字符串的第一个元素。返回值是字符串的首地址,取值为*

end()函数返回一个迭代器,指向字符串的最后一个元素。返回值是字符串的首地址,取值为*

string s = "hello world";//赋值
printf("%c\n", *(s.end()-1));
printf("%c\n", *s.begin());

输出如下:

d
h

6、反转字符串

reverse();  //反转字符串,可规定反转位置

如下对string类操作:

string s = "hello world";
reverse(s.begin(), s.end());
cout<<s<<endl;

对字符数组操作:

char str[]="hello world";
reverse(str,str+11);
printf("%s", str);

输出如下:

dlrow olleh

7、截取某个字符串中的⼦串

substr(); 
string s = "hello world";
string s1 = s.substr(6);//下标6开始到结束
string s2 = s.substr(0, 11);//下标0开始,截取11个字符
cout<<s1<<endl;
cout<<s2<<endl;

输出如下:

world
hello world

8、to_string()函数

to_string() 函数功能:将数字常量(整型的数字)转换为字符串,返回值为转换完毕的字符串。

string str = "hello world";
int t = 521;
string s = to_string((long double)t) + str;
cout << s << endl;

输出结果:

521hello world

9、stoi()函数

stoi()函数功能:将string类型的字符串转化为整形数字,返回值为转换完毕的数字。
注:使用此函数,要注意把编译器添加C++11标准;在做题时注意选择C++11。

string s = "123";
int a = stoi(s);
cout << "字符串s为:" << s << endl;
cout << "转换后为a:" << a << endl;

输出结果:

字符串s为:123
转换后为a:123

10、字符串比较

string 类模板既提供了 >、<、==、>=、<=、!= 等比较运算符,还提供了 compare() 函数。
主要介绍如下:string字符串比较方法

11、swap()函数

交换两个字符串的字符;

string s1 = "hello";
string s2 = "world";
cout << "s1 = " << s1 << endl;
cout << "s2 = " << s2 << endl;
swap(s1, s2);
cout << "s1 = " << s1 << endl;
cout << "s2 = " << s2 << endl;

输出如下:

交换前:
s1 = hello
s2 = world
交换后:
s1 = world
s2 = hello

12、assign()函数

该函数功能为对已经定义好的string变量赋值: string s;

s.assign(str); // 把str整体赋值给s
s.assign(str,1,3); // 如果str是"iamangel" 就是把"ama"赋给字符串 
s.assign(str,2,string::npos); // 把字符串str从索引值2开始到结尾赋给s 
s.assign("gaint"); // 不说 
s.assign("nico",5); // 把’n’ ‘I’ ‘c’ ‘o’ ‘\0’赋给字符串 
s.assign(5,'x'); // 把五个x赋给字符串

你可能感兴趣的:(C++学习之路,c++,字符串,string)