STDIO
Tìm kiếm gần đây

    Nội dung

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

    15/08/2015
    04/08/2020
    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.

    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.

    Thảo luận

    Đăng nhập

    Bài viết liên quan

    Thao Tác Với Chuỗi Trong C/C++

    Thao Tác Với Chuỗi Trong C/C++

    Khái niệm chuỗi ký tự do con người đặt ra để thuận tiện trong việc sử dụng. Có thể hiểu đơn giản, chuỗi là tập hợp các ký tự được lưu trữ liên tiếp trong vùng nhớ máy ...

    Rye Nguyen

    28/07/2015

    Xử Lý Chuỗi Trong PHP

    Xử Lý Chuỗi Trong PHP

    Chuỗi là một phần quan trọng và không thể thiếu đối với tất cả các trương trình và đặc biệt là một website. Việc thể hiện thông tin chính xác, mạch lạc và số lượng lớn ...

    Bùi Nguyễn Minh Hoàng

    28/08/2015

    9 Tính Năng Quan Trọng Trong C++11

    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 gọi là C++), với những tính năng mới tối ưu hơn, dễ sử dụng hơn, dễ quản lý bộ nhớ hơn, và khắc phục ...

    Lê Minh Tài

    13/08/2015

    Xử Lý Với File PLIST Trong Cocos2d-x 3.x.x

    Xử Lý Với File PLIST Trong Cocos2d-x 3.x.x

    Trong việc xây dựng, thiết kế project games của bạn, có nhiều tính toán, kỹ thuật, tính năng bạn phải sử dụng file để thao tác nhằm tăng hiệu suất của chương trình, giúp ...

    Lê Viết Duy

    14/06/2017

    Tối Ưu Xử Lí Chuỗi Với StringBuilder - Phần 1

    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 String và StringBuilder trong C#.

    Huỳnh Duy Lộc

    03/02/2018

    Exception Handling Trong C++

    Exception Handling Trong C++

    Xử lý ngoại lệ - exception handling hiệu quả với try, catch, throw thông qua ví dụ trong C++.

    Võ Lê Huy

    24/05/2018

    Chuỗi Và Xử Lí Chuỗi Trong PHP

    Chuỗi Và Xử Lí Chuỗi Trong PHP

    Chuỗi trong PHP là một dãy các kí tự ASCII. Khác với C chuỗi trong PHP không có ký tự kết thúc, chiều dài của chuỗi không giới hạn,… Việc xử lí, làm việc với chuỗi trong ...

    Tran Khanh Nguyen

    22/03/2017

    Con Trỏ Hàm Trong C/C++

    Con Trỏ Hàm Trong C/C++

    Tương tự Windows Form, trong những game được lập trình bằng C++ cũng có những Button, và để tạo ra chúng thì không đơn giản. Vì ngoài việc xử lý hình ảnh, ...

    Tuấn Trần

    18/08/2015

    Một Số Hàm Xử Lý Đồ Hoạ Trong PHP

    Một Số Hàm Xử Lý Đồ Hoạ Trong PHP

    Ngày nay, nhu cầu về sử dụng đồ hoạ đang bùng nổ rất mạnh mẽ, kéo theo sự phát triển của các thư viện đồ hoạ trong những năm gần đây. Bài viết ra đời, nhằm cung cấp đến ...

    Ryan Lê

    30/03/2015

    Chỉ Thị Tiền Xử Lý Trong C/C++

    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ý những thông tin trước khi bắt đầu quá trình biên dịch. Tất cả các chỉ thị tiền xử lý đều bắt đầu ...

    Phạm Hoài Nguyên

    10/08/2016

    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
    [email protected]

    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