前言:
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;
}