Nối chuỗi ký tự

C++:
Nối chuỗi ký tự

Làm thế nào:

Trong C++, chúng ta có một vài cách để nối các chuỗi. Dưới đây là một ví dụ sử dụng std::string và toán tử cộng (+):

#include <iostream>
#include <string>

int main() {
    std::string hello = "Hello, ";
    std::string world = "World!";
    
    std::string greeting = hello + world;
    
    std::cout << greeting << std::endl; // Kết quả: Hello, World!
    return 0;
}

Nhanh và đơn giản, phải không? Nhưng, chúng ta cũng có thể sử dụng append():

#include <iostream>
#include <string>

int main() {
    std::string hello = "Hello, ";
    hello.append("World!");
    
    std::cout << hello << std::endl; // Kết quả: Hello, World!
    return 0;
}

Hoặc thậm chí là toán tử operator+= nếu bạn muốn:

#include <iostream>
#include <string>

int main() {
    std::string hello = "Hello, ";
    hello += "World!";
    
    std::cout << hello << std::endl; // Kết quả: Hello, World!
    return 0;
}

Sâu hơn nữa

Lịch sử, C++ đã tiếp bước từ C, sử dụng các mảng ký tự và chức năng như strcat() để làm việc với chuỗi. Điều này rối rắm và dễ gặp lỗi hơn.

C++ hiện đại đã cải thiện tình hình với std::string. Nó an toàn hơn, dễ đọc hơn, và mang lại cho bạn nhiều lựa chọn. Nếu std::string không phải là gu của bạn, có std::stringstream hoặc thậm chí là std::format (từ C++20) dành cho những người hâm mộ định dạng.

Về bản chất, việc nối chuỗi bao gồm cấp phát bộ nhớ và sao chép. Nếu thực hiện không cẩn thận, nó có thể ảnh hưởng đến hiệu suất của chương trình như một cú đập. Các con trỏ thông minh và ngữ nghĩa di chuyển giảm bớt một số nỗi đau ở đây.

Đừng quên về các lựa chọn khác - các thư viện như Boost, hoặc xử lý UTF-8 với std::string_view cho các hoạt động không sao chép trên C++ hiện đại.

Xem thêm