string就是一个类
1.string 的构造函数
#include <string> //包含头文件
using namespace std;
int main(int argc, char *argv[])
{
string s1; //默认构造
const char * str = "hello world"; //使用字符串s进行初始化
string s2(str);
string s3(s2); //拷贝构造
string s4(10, 'a'); //初始化n个相同的字符,输出"aaaaaaaaaa"
2.string的赋值
string str1;
str1 = "hello";
string str2;
str2 = str1;
string str3;
str3.assign("hello"); //成员函数
string str4;
str4.assign(str3);
string str5;
str5.assign("hello",3); //将前三个字符录入str5中
3.字符串拼接
string str1;
str1 = "hello"
str1 += "hi"; //运算符的重载
string str2 = "kitty";
str2 += str1;
string str3 = "hello";
str3.append("hi");
string str4 = "hello";
str4.append(str3);
4.字符串查找和替换
string str1 = "abcdefgde";
int pos = str1.find("de") //这里的pos等于3,代表位置,从0开始计数,如果没有返回-1.
//还有一个rfind函数,find是从左往右查找,rfind是从右往左查找,但计数还是从左往右计数
int pos = str1.rfind("de"); //这里的pos等于7.
string str2 = "abcdefg";
str2.replace(1, 3, "1111"); //str2 = "a1111efg"
//从第一个位置起往后三个数替换成后面的字符串,如果字符串较多也会全部替换
函数原型中的const string& str就是一个新的string类型的值,例如str3
const char *s就是一个字符串,例如"hello"
5.字符串比较
string str1 = "hello"
string str2 = "hello"
str1.compare(str2) == 0 //相等
str1.compare(str2) > 0 //str1>str2
6.string的插入和删除
string str1 = "sello";
string str2 = "kitty";
str1.insert(1, str2); //skittyello
string str1 = "sello";
str1.erase(1, 2); //slo
7.获取子串
string str1 = "sello";
string s = str1.substr(1, 3); //ell
8.配合的实用操作
string email = "zhangsan@sina.com"
int pos = email.find('@');
string usr = email.substr(0,pos);
9.c_str函数
把string对象转换成c中的字符串的样式;
strcpy(c,s.c_str());这样用才是正确的,因为c_str返回的是一个临时的指针
10.string::npos
有两种用法:
string filename = "test.cpp";
cout << "filename : " << filename << endl;
size_t idx = filename.find('.'); //作为返回值表示没有找到匹配项
if(idx == string::npos)
{
cout << "filename does not contain any period!" << endl;
}
else
{
string tmpname = filename;
tmpname.replace(idx + 1, string::npos, "xxx"); //作为函数的长度参数,表示直到字符串结束
cout << "repalce: " << tmpname << endl;
}
执行结果为:
filename:test.cpp
replace: test.xxx