C++ string and string_view
導航專用
- string(不可變字串)
- string 變數定義
- string 輸入輸出
- string 求長度
- string c++ 轉化為 c 風格字串
- string 訪問單個字符
- string 字串拼接
- string 插入
- string 洗掉
- string 提取子字串
- string 查找子串
- string → string_view(可變字串)
- string_view 宣告及定義
- string_view 長度
- string_view 修改字串
- string_view 的其他行為
string(不可變字串)
string 變數定義
char text[] = "dada";
std::string str1; // 宣告變數,默認為空字串 ""
str1 = text; // str1 = "dada"
std::string str2{"ddd"}; // str2 = "ddd"
std::string str3 = str2; // 用 str2 初始化 str1
string 輸入輸出
std::string str1;
// 輸入空格后面的字串無法輸出,因為 cin 遇到空格后就默認輸入結束
std::cin>>str1;
std::cout<<str1;
// 采用下面這種形式則可以輸入并顯示空格
std::getline(std::cin, str2);
std::cout<<str2;
string 求長度
std::string str {"djaljl"};
auto len = str.length(); // len = 6
string c++ 轉化為 c 風格字串
std::string str1 {"fdafaga"};
auto str2 { str1 };
auto str3 = str2.c_str();
string 訪問單個字符
std::string str {"ffgz"};
for(int i = 0; i < str.length(); ++i){ // for 賦值
str[i] = 't';
}
for(const auto& c : str){
std::cout << c << ' '; // foreach 輸出
string 字串拼接
std::string str1 = "ddd";
std::string str2 = "aaa";
auto str3 = str1 + str2; // 兩字串拼接
str3 += 'd'; // 拼接單個字符
char d = 'n';
str3 += d; // str3 = "dddaaadn"
string 插入
std::string str = "aeiou";
str.insert(3, "dd"); // 在下標為 3 的位置插入 "dd", str = "aeiddou"
string 洗掉
std::string str{"aeiougg"};
str.erase(2, 3); // 洗掉下標為 2 開始后的三個字符, str = "aegg"
// 不指明長度則將下標位置后的字符全部洗掉, 如果長度越界也是洗掉后面的全部字符
string 提取子字串
std::string str1 {"aeiouabcdef"};
auto str2 = str1.substr(3,5); // 提取下標為 3 開始, 長度為 5 的子串 str2 = "ouabc"
string 查找子串
std::string str {"aeiouabcdd"};
// find()
int index = str.find("abc"); // 回傳的子字串第一次出現在字串中的起始下標 index = 5
// 默認從第一的字符(下標為 0 的位置)開始查找
// 沒有找到回傳一個無窮大值 4294967295
index = str.find("bcd", 4); // index = 6, 第二個引數表示從下標為 4 的地方開始查找
// rfind()
int rindex = str.rfind("abc", 6); // rindex = 5, 從下標 0 開始查找到下標 6
// 若做找到則回傳, 未找到則回傳無窮大值 4294967295
// find_first_of()
auto s {"string"};
int findex = str.find_first_of(s); // 回傳 str 和 s 字串共有的字符(i)在 str 中第一次出現的下標 findex = 2
string → string_view(可變字串)
string_view 宣告及定義
char text[] = "text";
std::string_view str{ text };
std::string_view more{ str }; // more = "text"
string_view 長度
std::string_view str_view {"ddddd"};
auto len = str_view.length(); // len = 5
string_view 修改字串
std::string_view str1 {"abc"};
auto str2 {str1};
str2[1] = 's'; // str1 = str2 = "asc"
string_view 的其他行為
自主學習
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/245788.html
標籤:其他
上一篇:李哥牛逼嗎
