C++ STL: Sử dụng String
Hi. chào mừng các bạn đến với chủ đề: lập trình c++ thư viện stl.
Hôm nay chúng ta tìm hiểu về string trong c++
std::string là một lớp được sử dụng để lưu trữ và xử lý các chuỗi ký tự.
1. Gán chuỗi cho string.
std::string str1 = "Hello everybody"; std::string str2 = "Welcome to phattrienphanmem123az.com";
2. Lấy length của chuỗi, lấy ký tự đầu, ký tự cuối của chuỗi, ký tự tại vị trí bất kỳ.
int length = str1.length(); char ch1 = str1.front(); char ch2 = str1.back(); char ch3 = str1.at(1);
3. Ghép chuỗi 2 cho chuỗi 1, thay thế nội dung chuỗi 2 cho chuỗi 1.
str1.append(str2); str1.assign(str2)
4. Xóa hoàn toàn một chuỗi, đẩy ký tự vào, ra khỏi chuỗi.
str1.erase(); str.push_back("a"); str.pop_back();
5. So sánh hai chuỗi.
#include "stdafx.h" #include <iostream> #include <conio.h> #include <string> #include <vector> void main() { std::string str1 = "Hello everybody"; std::string str2 = "Welcome to phattrienphanmem123az.com"; std::string str3 = "Hello everybody"; std::string str4 = "Hello"; int ret1 = str1.compare(str3); int ret2 = str1.compare(str2); int ret3 = str1.compare(str4); _getch(); return ; }
+ str1 và string3 giống hệt nhau lên => ret1 = 0
+ str1 có số lượng ký tự nhỏ hơn str2 => ret1 < 0;
+ str1 có số ký tự lớn hơn str4 => ret1 > 0
6. Chèn chuỗi vào vị trí mong muốn.
std::string str1 = "Hello everybody"; std::string str2 = "Welcome to phattrienphanmem123az.com"; std::string str3 = "Hello everybody"; std::string str4 = "Hello"; str1.insert(0, str2); str1.insert(2, str2, 3, 4);
+ Chèn chuỗi 2 bắt đầu tại vị trí 0 của chuỗi 1.
+ Lấy 4 ký tự của chuỗi 2 bắt đầu từ ký tự số 3 và chèn 4 ký tự đó vào chuỗi 1 bắt đầu từ vị trí 2 của chuỗi 1.
7. Tìm kiếm trong string.
+ Hàm std::string.find: Cho phép tìm kiếm chuỗi 2 có mặt trong chuỗi 1 hay không, trả lại vị trí bắt đầu tìm được
std::string str1 = "Hello everybody"; std::string str2 = "every" ; int n = str1.find(str2);
n = 6
+ Hàm std::string.find_first_of: Tìm ra ký tự đầu tiên trong chuỗi 1 mà ký tự này là 1 trong số các ký tự của chuỗi 2.
std::string str1 = "Hello everybody"; std::string str2 = "every" ; int n = str1.find_first_of(str2);
n = 1, vi nó tìm thấy chữ e là chữ đầu tiên trong chuỗi 1 có mặt ở chuỗi 2.
+ Hàm std::string.find_first_not_of. Ngược lại với hàm trên, nó sẽ tìm ký tự đầu tiên mà không thuộc nhóm ký tự chuỗi 2.
std::string str1 = "everybody"; std::string str2 = "every" ; int n = str1.find_first_not_of(str2);
n = 5.. vì chữ b là ký tự đầu tiên nó tìm được trong chuỗi 1 mà ko thuộc chuỗi 2.
+ Tương tự với hai hàm : find_last_of, find_first_not_of
Nó sẽ tìm ký tự cuối cùng của chuỗi 1 thuộc/ko thuộc ở chuỗi 2.
8. Tách chuỗi bởi một ký tự, ví dụ space
unsigned int SplitString(const std::string &str_input, std::vector<std::string> &ret_list, char ch) { unsigned int pos = str_input.find(ch); unsigned int init_pos = 0; ret_list.clear(); while(pos != std::string::npos) { std::string str_sub = str_input.substr(init_pos, pos - init_pos + 1); ret_list.push_back(str_sub); init_pos = pos + 1; pos = str_input.find(ch, init_pos); } std::string last_sub = str_input.substr(init_pos, std::min(pos, str_input.size()) - init_pos + 1); ret_list.push_back(last_sub); return ret_list.size(); } void main() { std::vector<std::string> ret_arr; SplitString( "Welcome to phattrienphanmem123az", ret_arr, ' ' ); _getch(); return ; }
Hay,rất bổ ích…Cảm ơn ad