STDIO
Tìm kiếm gần đây
    • Nội dung
    • QR Code
    • 0
    • 0
    • Sao chép

    std::string và Xử Lý Chuỗi trong C++

    Giới thiệu và hướng dẫn sử dụng thư viện std::string trong C++ xử lý chuỗi.
    15/08/2015
    04/09/2020
    4 phút đọc
    std::string và Xử Lý Chuỗi trong C++

    String

    Khái niệm

    Trong C++, lớp std::string hay đối tượng string là thể hiện tiêu biểu cho văn bản, cho phép thao tác với chuỗi một cách an toàn. Nói cách khác, string giảm thiểu tối đa các vấn đề phát sinh về bộ nhớ khi bạn thao tác với chuỗi trong C để tập trung vào toán chính.

    Khác biệt giữa chuỗi trong C++ so với C

    std::string trong C++ vẫn giữ tư tưởng thao tác xử lý chuỗi giống trong C. Tuy nhiên, nó hỗ trợ thêm một số tính năng khác.

    C++ vẫn hỗ trợ việc thao tác với chuỗi trên mảng tĩnh như trong C,  và để dễ thao tác hơn C++ hỗ trợ thêm lớp std::string. Nói cách khác, trong C++, chúng ta có thể thao tác với chuỗi trên bằng mảng tĩnh hoặc đối tượng thuộc lớp std::string.

    Các thao tác xử lý chuỗi với std::string

    Khai báo

    Cú pháp:

    // Them thu vien
    #include <string>

    // Khai bao
    std::string <tên chuỗi>;

    Ví dụ:

    std::string str1;
    str1 = "Xu ly chuoi";
    string str2 = "bang std::string";
    string str3;

    Lấy chiều dài chuỗi

    length() lấy chiều dài của chuỗi.

    Ví dụ:

    std::string str = "Xu ly chuoi";
    cout << str.length() << endl;

    Kết quả: 11.

    Lấy 1 ký tự tại vị trí bất kỳ trong chuỗi

    at(index) lấy ký tại vị trí index.

    Ví dụ:

    std::string str = "Xu ly chuoi";
    cout << str.at(4) << endl;

    Kết quả: y.

    Nối 2 chuỗi

    + để nối 2 chuỗi.

    Ví dụ:

    std::string protocol = "https://";
    std::string domain = "stdio.vn";

    std::string link = protocol + "www." + domain;

    Kết quả: https://www.stdio.vn.

    So sánh chuỗi

    Sử dụng các toán tử so sánh > == < để thực hiện so sánh 2 chuỗi theo vị trí trong từ điển.

    Cú pháp:

    <tên chuỗi thứ 1> <toán tử so sánh> <tên chuỗi thứ 2>

    Ví dụ:

    if (str1 > str2)
    {
    	cout << "str1 dung sau str2 trong tu dien!" << endl;
    }
    
    if (str1 == str2)
    {
    	cout << "Hai chuoi giong nhau!" << endl;
    }
    
    if (str1 < str2)
    {		
    	cout << "str1 dung truoc str2 trong tu dien!" << endl;
    }
    

    Tìm kiếm chuỗi con

    find(pattern) tìm kiếm chuỗi pattern trong chuỗi target.

    Trả về vị trí đầu tiên khi tìm thấy được pattern trong chuỗi target.

    Ví dụ:

    string target = "Welcome to STDIO Training";
    string pattern = "to STDIO";
    
    size_t pos = target.find(pattern);
    cout << pos;

    Kết quả: 8.

    So sánh C string (string.h) và std::string (string)

    So sánh sự khác biệt trong một số thao tác xử lý chuỗi trong ngôn ngữ C (thư viện string.h) và xử lý chuỗi trong ngôn ngữ C++ (thư viện std::string).

    • Truy cập vị trí bất kỳ
    • Lấy độ dài chuỗi
    • Nối 2 chuỗi
    • Sao chép chuỗi
    • So sánh 2 chuỗi

    std::string

    #include <string>
    using namespace std;
    
    int main()
    {
    	string str1 = "Welcome to ";
    	string str2 = "STDIO Training";
    	string str_temp;
    
    	// Truy cap vi tri bat ky
    	char c = str1.at(3);
    
    	// Lay do dai chuoi
    	site_t length = str1.length();
    
    	// Noi 2 chuoi
    	str_temp = str1 + str2;
     
    	// Sao chep chuoi
    	str_temp = str1;
    
    	// So sanh 2 chuoi
    	bool result1 = str1 < str2;
    	bool result2 = str1 > str2;
    	bool result3 = str1 == str2;
    	
    	return 0;
    }

    C string

    #include <string.h>
     
    int main()
    {
    	char str1[20] = "Welcome to ";
    	char str2[20] = "STDIO Training";
    	char str_temp[20];
    	
    	// Truy cap vi tri bat ky
    	char c = str1[3];
    	
    	// Lay do dai chuoi
    	site_t length = strlen(str1);
    	
    	// Noi 2 chuoi
    	strcat(str_temp, str1);
    	strcat(str_temp, str2);
     
    	// Sao chep chuoi
    	strcpy(str_temp, str1);
    	
    	// So sanh 2 chuoi
    	int result = strcmp(str1, str2);
    	
    	return 0;
    }

    std::string không chỉ mở rộng chức năng mà còn:

    • Hỗ trợ trừu tượng hóa bằng phương pháp lập trình hướng đối tượng. Một trường hợp trong ví dụ trên, thay vì phải nhớ hàm strcat để nối 2 chuỗi như trong C, chỉ cần sử dụng toán tử + là có thể nối được 2 chuỗi lại một cách dễ dàng.
    • Hỗ trợ loại bỏ việc quá tập trung vào xử lý bộ nhớ thay vì nghiệp vụ chính.
    0 Bình luận
    Modern C++

    Modern C++

    STDIO Training - Đào Tạo Lập Trình C++.

    Đề xuất

    Xử Lý Chuỗi Trong PHP
    Thao tác xử lý chuỗi và các hàm xử lý chuỗi thông dụng trong ngôn ngữ ...
    28/08/2015
    Hiện Thực và Sử Dụng Hàm strcmp - strcpy - strlen trong C/C++
    Hướng dẫn sử dụng hàm strlen để lấy độ dài chuỗi, hàm strcmp để so sánh ...
    21/08/2015

    Khám phá

    9 Tính Năng Quan Trọng Trong C++11
    C++11 là một phiên bản cải tiến và nâng cấp từ C++98 (hay các bạn vẫn ...
    13/08/2015
    Thao Tác Với Chuỗi Trong C/C++
    Kiến thức cơ bản trong thao tác xử lý chuỗi trong C++.
    28/07/2015
    Tối Ưu Xử Lý Chuỗi với StringBuilder - Phần 1
    Bài viết giới thiệu và phân tích hiệu năng khi xử lí chuỗi với đối tượng ...
    03/02/2018
    Hiện Thực và Sử Dụng Hàm memcmp - memcpy - memset Trong C/C++
    Hướng dẫn hiện thực hàm memcpy, memcpy, memset và sử dụng các hàm trong ...
    21/08/2015
    Exception Handling trong C++
    Xử lý ngoại lệ - exception handling hiệu quả với try, catch, throw thông ...
    24/05/2018
    Xử Lý Với File PLIST trong Cocos2d-x 3.x.x
    Giới thiệu những đặc điểm, cách xử lý và ứng dụng của file PLIST trong ...
    Chỉ Thị Tiền Xử Lý trong C/C++
    Chỉ thị tiền xử lý là những chỉ thị cung cấp cho bộ tiền xử lý để xử lý ...
    10/08/2016
    Khái Niệm về Chuỗi
    Chuỗi là một trong những khái niệm được sử dụng nhiều nhất trong lập ...
    25/07/2015
    Khi bạn nhấn vào liên kết sản phẩm do STDIO đề xuất và mua hàng, STDIO có thể nhận được hoa hồng. Điều này hỗ trợ STDIO tạo thêm nhiều nội dung hữu ích. Tìm hiểu thêm.
    STDIO
    Trang chính
    Công ty TNHH STDIO

    30, Trịnh Đình Thảo, Hòa Thạnh, Tân Phú, Hồ Chí Minh
    +84 28.36205514 - +84 942.111912
    developer@stdio.vn

    383/1 Quang Trung, Phường 10, Quận Gò Vấp, Hồ Chí Minh
    Số giấy phép ĐKKD: 0311563559 do sở Kế hoạch và Đầu Tư TPHCM cấp ngày 23/02/2012

    ©STDIO, 2013 - 2020