C++STL2 string

string的基本操作

聲明 string str;賦值str="ABC"
各種用法戳此文
也可以戳此文

我認爲重要的:

1.構造函數中:string str(n,‘A’)——存儲 n 個 ‘A’ 到 str 中
複製 string str(str1)
2.成員函數中:str.assign(“ABC”)——清空字符串,並設置爲 “ABC”, 注意assign就相當於清空原來重新設置

3.str.size()——和 length() 一樣

4.str.swap(str1)——交換 str1 和 str 的字符串

5.str.append(“ABC”)——在str末尾添加一個字符串 “ABC”,參數必須是字符串形式

6.str.insert(2,3,‘A’)——在str下標爲2的位置添加 3個 字符’A’
str.insert(2,“ABC”)——在str下標爲2的位置添加 字符串 “ABC”

7.str.erase(2)——刪除 下標2 的位置開始,之後的全刪除
str.erase(2,1)——刪除 下標2 的位置開始,之後的 1個 刪除
str.clear()——刪除 str 所有
str.replace(2,4,“abcd”)——從 下標2 的位置,替換 4個字節 ,爲"abcd" str.empty()——判空

8.str.find(“ABC”)——查找 “ABC” str.find(‘B’,1)——從 位置1 處,查找’B’

9.str1=str.substr(2)——提取子串,提取出 str 的 下標爲2 到末尾,給 str1
str1=str.substr(2,3)——提取子串,提取出 str 的 下標爲2 開始,提取三個字節,給 str1

10.compare函數:完全相等返回0;完全不等返回小於0;部分相等返回大於0,str.compare(“abcd”)——完全相等,返回0

#include<iostream>
using namespace std;
 
int main() {
	string s1;   //空字符串
	string s2(10,'$');  //十個 $
	string s3("hello world");  //hello word
 
	cout << s3.size() << endl;
	cout << s3.length() << endl; //求字符串長度  11 size和length一樣
 
	s3.clear();  //清空
	string s4(s3); //s4 和 s3一樣
}

insert方法的示例代碼如下:

#include <iostream>
#include <string>
using namespace std;
int main()
{
    string strDemo = "I am";
 
    strDemo.insert(4, " good.");//插在第4位後面
 
    cout << "strDemo is: " << strDemo << endl;
 
    return 0;
}
 

string的遍歷

1.直接下標 與char數組一樣
2.迭代器,類似於指針

    string::iterator it = str.begin();   //1234
    while (it != str.end())
    {
			...
    }

3.for循環

使用範圍for語句處理每個字符,C++11新式for循環(底層實現是迭代器;auto自動推到類型,C++11支持)(轉)

for (declaration : expression)
	statement

其中, expression部分是一個對象,用於表示一個序列。declaration部分負責定義一個變量,該變量將被用於訪問序列中的基礎元素。每次迭代,declaration部分的變量會被初始化爲expression部分的下一個元素值。

通過使用範圍for語句可以遍歷string對象中的每個字符。

string str("some string");
for (auto c : str) {
	cout << c << endl;
}

還可以通過引用改變字符串中的字符:

string str("some string");
for (auto &c : str) {
	c = toupper(c);
}

cout << str << endl;

除了使用引用的方法外還可以通過下標來處理字符:

for (decltype(str.size()) index = 0; index != str.size(); ++index) {
	str[index] = toupper(str[index]);				// 將當前字符改寫爲大寫形式
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章