ฉันจะแปลงจากstd::stringstreamเป็นstd::stringภาษา C ++ ได้อย่างไร
ฉันต้องเรียกเมธอดบนสตรีมสตริงหรือไม่
ฉันจะแปลงจากstd::stringstreamเป็นstd::stringภาษา C ++ ได้อย่างไร
ฉันต้องเรียกเมธอดบนสตรีมสตริงหรือไม่
คำตอบ:
yourStringStream.str()
ใช้. str () - วิธีการ :
จัดการเนื้อหาของสตริงอ็อบเจ็กต์
1)
rdbuf()->str()ส่งคืนสำเนาของสตริงพื้นฐานเช่นถ้าโดยการเรียก2) แทนที่เนื้อหาของสตริงพื้นฐานราวกับว่ากำลังโทร
rdbuf()->str(new_str)...หมายเหตุ
สำเนาของสตริงพื้นฐานที่ส่งคืนโดย str เป็นอ็อบเจ็กต์ชั่วคราวที่จะถูกทำลายเมื่อสิ้นสุดนิพจน์ดังนั้นการเรียก
c_str()ใช้ผลลัพธ์ของstr()(เช่นในauto *ptr = out.str().c_str();) โดยตรงจึงทำให้ตัวชี้ห้อย ...
std::stringstream::str() เป็นวิธีการที่คุณกำลังมองหา
ด้วยstd::stringstream:
template <class T>
std::string YourClass::NumericToString(const T & NumericValue)
{
std::stringstream ss;
ss << NumericValue;
return ss.str();
}
std::stringstreamเป็นเครื่องมือทั่วไปมากกว่า คุณสามารถใช้คลาสพิเศษstd::ostringstreamสำหรับงานเฉพาะนี้ได้
template <class T>
std::string YourClass::NumericToString(const T & NumericValue)
{
std::ostringstream oss;
oss << NumericValue;
return oss.str();
}
หากคุณกำลังทำงานกับstd::wstringประเภทของสตริงคุณต้องเลือกstd::wstringstreamหรือเลือกstd::wostringstreamแทน
template <class T>
std::wstring YourClass::NumericToString(const T & NumericValue)
{
std::wostringstream woss;
woss << NumericValue;
return woss.str();
}
หากคุณต้องการให้ประเภทอักขระของสตริงของคุณสามารถเลือกรันไทม์ได้คุณควรกำหนดให้เป็นตัวแปรเทมเพลต
template <class CharType, class NumType>
std::basic_string<CharType> YourClass::NumericToString(const NumType & NumericValue)
{
std::basic_ostringstream<CharType> oss;
oss << NumericValue;
return oss.str();
}
สำหรับวิธีการทั้งหมดข้างต้นคุณต้องรวมไฟล์ส่วนหัวสองไฟล์ต่อไปนี้
#include <string>
#include <sstream>
โปรดทราบว่าอาร์กิวเมนต์NumericValueในตัวอย่างด้านบนยังสามารถส่งผ่านเป็นstd::stringหรือstd::wstringใช้กับอินสแตนซ์std::ostringstreamและstd::wostringstreamตามลำดับได้ ไม่จำเป็นที่NumericValueจะต้องเป็นค่าตัวเลข
จากหน่วยความจำที่คุณเรียกstringstream::str()เพื่อให้ได้std::stringค่าออกมา