在使用string类之前,需要包含以下头文件:
#include
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(); //销毁所有字符,释放内存
string串要取得其中某一个字符,和传统的C字符串一样,可以用s[i]的方式取得。比较不一样的是如果s有三个字符,传统C的字符串的s[3]是’\0’字符,但是C++的string则是只到s[2]这个字符而已。
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”; //非法操作:两个字符串字面值相加
s.find(t); //查找字符串t是否是s的子串
如果是则返回第一次匹配的地址,不是则返回-1(string::npos )。
返回值的类型为int类型,返回的是字符串的下标。
begin()函数返回一个迭代器,指向字符串的第一个元素。返回值是字符串的首地址,取值为*
end()函数返回一个迭代器,指向字符串的最后一个元素。返回值是字符串的首地址,取值为*
string s = "hello world";//赋值
printf("%c\n", *(s.end()-1));
printf("%c\n", *s.begin());
输出如下:
d
h
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
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
to_string() 函数功能:将数字常量(整型的数字)转换为字符串,返回值为转换完毕的字符串。
string str = "hello world";
int t = 521;
string s = to_string((long double)t) + str;
cout << s << endl;
输出结果:
521hello world
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
string 类模板既提供了 >、<、==、>=、<=、!= 等比较运算符,还提供了 compare() 函数。
主要介绍如下:string字符串比较方法
交换两个字符串的字符;
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
该函数功能为对已经定义好的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赋给字符串