ฉันจะแปลงจาก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
ค่าออกมา