C++:
Nội suy chuỗi ký tự
Làm thế nào:
C++ không có tính năng nội suy chuỗi được tích hợp sẵn như một số ngôn ngữ khác. Bạn thường sử dụng std::ostringstream
, std::format
(từ C++20), hoặc định dạng kiểu printf.
Với std::ostringstream
:
#include <sstream>
#include <iostream>
int main() {
std::ostringstream message;
int age = 30;
message << "Hello, I am " << age << " năm tuổi.";
std::cout << message.str() << std::endl; // "Hello, I am 30 năm tuổi."
}
Với std::format
(C++20):
#include <format>
#include <iostream>
int main() {
int age = 30;
std::string message = std::format("Xin chào, tôi {} năm tuổi.", age);
std::cout << message << std::endl; // "Xin chào, tôi 30 năm tuổi."
}
Sâu hơn
Trước C++20, chúng ta nối chuỗi bằng cách sử dụng luồng hoặc sprintf, đó là cách không mấy thuận tiện. Với sự xuất hiện của std::format
, chúng ta đang bắt kịp với các ngôn ngữ hiện đại như Python với f-strings của họ.
std::ostringstream
: Điều này cung cấp cho chúng ta một cách giống như luồng để xây dựng chuỗi. Nó linh hoạt nhưng không phải là cách gọn nhẹ nhất. Nó đã là lựa chọn hàng đầu trong nhiều năm vì nó an toàn và dễ sử dụng.
std::format
: Được giới thiệu trong C++20, nó cung cấp định dạng giống như Python. Nó dễ đọc và hiệu quả hơn so với việc nối chuỗi bằng luồng nhưng đòi hỏi trình biên dịch mới hơn.
Có những sự thay thế tồn tại như Boost.Format hoặc sử dụng nối chuỗi, nhưng chúng không được sạch sẽ hoặc có thể gây ra chi phí phụ.
Nội suy chuỗi chỉ là đường nét, nhưng nó ngọt ngào. Điều này đơn giản hóa mã nguồn và tránh được việc giảm hiệu suất do việc liên tục thêm chuỗi.