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