前言:
C++中的字符串string很有意思,兼具基础类型和类类型的特点,也兼具数组和容器的特点。接下来就string的用法以及标准库提供的函数具体说明。下面的例子从多种使用场景给出示例。
正文:
#include <iostream>
#include <string>
using namespace std;
int main()
{
// 1、字符串的定义和赋值
string str = "I am Jimmy"; //可以用等号,因为string类重载了“=”运算符。
string str2("I am Jimmy"); //可以用string的构造函数定义字符串
string str3;
str3.assign("I am Jimmy"); //可以用string类提供的赋值函数
// 2、访问字符串某个位置上的字符
cout << str[0] << endl; //数组的方式
cout << str.at(0) << endl; //string类提供的访问方式
cout << str.front() << endl; //访问第一个位置
cout << str.back() << endl; //访问最后一个位置
// 3、字符串的大小(容量)
cout << str.size() << "," << str.length() << endl; //返回源字符串的长度大小,这两个函数一样的效果。
cout << str.max_size() << endl; //返回string对象中可存放的最大字符串的长度。
cout << str.capacity() << endl; //返回string分配的存储容量
cout << (str.empty() ? "Y" : "N") << endl; //判空函数
// 4、增
str = "I am Jimmy";
str.insert(0, "hello everyone, "); //指定下标,插入字符串
cout << str << " :" << str.size() << endl;
str = "I am Jimmy";
str.push_back('!'); //固定在末尾加上一个字符
cout << str << " :" << str.size() << endl;
str = "I am Jimmy";
str.append("!!"); //append函数在末尾追加字符串
cout << str << " :" << str.size() << endl;
str = "I am Jimmy";
str.append(1, '!'); //如果追加字符,则需要指定个数
cout << str << " :" << str.size() << endl;
// 5、删
str = "I am Jimmy";
str.erase(1, 3); //删除下标1开始,长度3的所有元素
cout << str << ":" << str.size() << endl;
str = "I am Jimmy";
str.erase(str.begin() + 2); //如果想删除制定位置的一个char,必须要用用迭代器,不能直接制定下标2
cout << str << ":" << str.size() << endl;
str = "I am Jimmy";
str.erase(str.begin() + 1, str.end() - 1); //用迭代器删除范围内的所有元素
cout << str << ":" << str.size() << endl;
// 6、改
str = "I am Jimmy";
str[2] = ' '; //删除下标1开始,长度3的所有元素
cout << str << ":" << str.size() << endl;
// 7、查
str = "I am Jimmy";
int position = str.find("yI"); //字符的位置
cout << position << endl;
position = str.find("am"); //字符串的位置
cout << position << endl;
// 8、替换
str = "I am Jimmy";
str.replace(2, 3, "love "); //原字符串从下标2开始,往后3个元素,替换成参数中的字符串
cout << str << ":" << str.size() << endl;
// 9、子串
str = "I am Jimmy";
str2 = str.substr(5, 5); //2个参数,截取下标5,及之后的5个元素
cout << str2 << ":" << str2.size() << endl;
str = "I am Jimmy";
str2 = str.substr(2); //1个参数,截取下标2及之后的所有元素
cout << str2 << ":" << str2.size() << endl;
// 10、迭代器
str = "I am Jimmy";
for (string::iterator ite = str.begin(); ite != str.end(); ite++) {
cout << *ite << endl; // string是容器,当然可以使用迭代
}
// 11、查++
// find函数是匹配整个串,而find_first_of是将参数串拆开一一匹配
str = "apple";
position = str.find_first_of("aeiou"); //简单的一行就能判断单词里面有没有元音字母
cout << position << endl;
}