การแทรกค่าลงในสตริง

C++:
การแทรกค่าลงในสตริง

วิธีการ:

C++ ไม่มีฟังก์ชันการแทรกสตริงภายในตัวอย่างบางภาษาอื่น ๆ คุณมักจะใช้ std::ostringstream, std::format (จาก C++20), หรือการจัดรูปแบบตามสไตล์ printf

ด้วย std::ostringstream:

#include <sstream>
#include <iostream>

int main() {
    std::ostringstream message;
    int age = 30;
    message << "สวัสดี, ฉันอายุ " << age << " ปี.";
    std::cout << message.str() << std::endl; // "สวัสดี, ฉันอายุ 30 ปี."
}

ด้วย std::format (C++20):

#include <format>
#include <iostream>

int main() {
    int age = 30;
    std::string message = std::format("สวัสดี, ฉันอายุ {} ปี.", age);
    std::cout << message << std::endl; // "สวัสดี, ฉันอายุ 30 ปี."
}

ลงลึก

ก่อน C++20, เราต่อสตริงด้วยสตรีมหรือ sprintf ซึ่งไม่ค่อยสะดวก เมื่อมีการนำ std::format เข้ามา, เราเริ่มทันสมัยขึ้นเหมือนกับภาษาอื่น ๆ เช่น Python ที่มี f-strings

std::ostringstream: มันให้เราวิธีแบบสตรีมในการสร้างสตริงขึ้นมา มันหลากหลายแต่อาจไม่ใช่วิธีที่กระชับที่สุด มันเป็นที่นิยมใช้มาหลายปีเพราะมันปลอดภัยและใช้งานง่าย

std::format: ถูกนำมาใช้ใน C++20, มันเสนอการจัดรูปแบบคล้ายกับ Python มันอ่านง่ายและมีประสิทธิภาพมากกว่าการต่อสตรีม แต่ต้องการคอมไพเลอร์รุ่นใหม่

มีทางเลือกอื่น ๆ เช่น Boost.Format หรือการใช้การต่อสตริง, แต่พวกมันอาจไม่คล่องตัวเท่าหรืออาจทำให้เกิด overhead

การแทรกสตริงเป็นเพียงความสะดวก, แต่มันมีประโยชน์ มันทำให้โค้ดง่ายขึ้นและหลีกเลี่ยงการลดประสิทธิภาพจากการต่อเติมสตริงอย่างต่อเนื่อง

ดูเพิ่มเติม