string
构造string
1 2 3 4 5
| string str1("hello"); string str2("hello",2); string str3(str1, 2); string str4(str1, 2, 2); string str5(5,'a');
|
访问string
虽然at和operator[]都可以获取指定下标的字符,但at有越界检查,发现越界时(pos >= size())会抛出异常std::out_of_range ,operator[]没有越界检查,当越界时行为未定义。
1 2 3 4 5 6 7 8 9 10 11 12 13
| string str1("hello"); cout << str1.front() << endl; cout << str1.back() << endl; cout << str1[1] << endl; cout << str1.at(2) << endl; cout << str1.data() << endl; cout << str1.c_str() << endl; cout << str1.substr(1,2) << endl; cout << str1.substr() << endl; cout << str1.substr(3) << endl; cout << str1.size()<< endl; cout << str1.length() << endl; cout << boolalpha << str1.empty() << endl;
|
操作string
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| int main() { string str1("hello"); string str2(" world"); auto str3 = str1 + str2; auto str4 = str1 + " xiao ming"; str3.assign("12345678"); str3.clear(); str3.append("222"); str3.insert(1, "abc",3); cout << str3<<endl; str3.replace(1, 3,"defg"); cout << str3 << endl; str3.erase(1, 4); cout << str3 << endl; system("pause"); }
|
查找string
string类提供了6个不同的查找函数,每个函数有4个重载版本,当搜索失败时,返回一个名为string::npos的静态成员,标准库将npos定义为string::size_type类型并初始为-1。当搜索成功时,返回第一个匹配位置的下标。
搜索操作 |
说明 |
s.find(args) |
查找s中args第一次出现的位置 |
s.rfind(args) |
查找s中args最后一次出现的位置 |
s.find_first_of(args) |
在s中查找args中任何一个字符第一次出现的位置 |
s.find_last_of(args) |
在s中查找args中任何一个字符最后一次出现的位置 |
s.find_first_not_of(args) |
在s中查找第一个不在args中的字符 |
s.find_last_not_of(args) |
在s中查找最后一个不在args中的字符 |
args可以使如下形式:
args |
说明 |
c,pos |
从s中位置pos开始查找字符c,pos默认为0 |
s2,pos |
从s中位置pos开始查找字符串s2,pos默认为0 |
cp,pos |
从s中位置pos开始查找以空字符结尾的字符数组cp,pos默认为0 |
cp,pos,n |
从s中位置pos开始查找以空字符结尾的字符数组cp的前n个字符,pos和n无默认值 |