Làm cách nào để chuyển đổi từ std::stringstreamsang std::stringtrong C ++?
Tôi có cần gọi một phương thức trên luồng chuỗi không?
Làm cách nào để chuyển đổi từ std::stringstreamsang std::stringtrong C ++?
Tôi có cần gọi một phương thức trên luồng chuỗi không?
Câu trả lời:
Các bác sĩ cho biết:
yourStringStream.str()
Sử dụng phương thức .str () - :
Quản lý nội dung của đối tượng chuỗi bên dưới.
1) Trả về bản sao của chuỗi bên dưới như thể bằng cách gọi
rdbuf()->str().2) Thay thế nội dung của chuỗi bên dưới như thể bằng cách gọi
rdbuf()->str(new_str)...Ghi chú
Bản sao của chuỗi cơ bản được trả về bởi str là một đối tượng tạm thời sẽ bị hủy ở cuối biểu thức, vì vậy việc gọi trực tiếp
c_str()kết quả củastr()(ví dụ: inauto *ptr = out.str().c_str();) dẫn đến một con trỏ treo lơ lửng ...
std::stringstream::str() là phương pháp bạn đang tìm kiếm.
Với std::stringstream:
template <class T>
std::string YourClass::NumericToString(const T & NumericValue)
{
std::stringstream ss;
ss << NumericValue;
return ss.str();
}
std::stringstreamlà một công cụ chung chung hơn. Bạn có thể sử dụng lớp chuyên biệt hơn std::ostringstreamcho công việc cụ thể này.
template <class T>
std::string YourClass::NumericToString(const T & NumericValue)
{
std::ostringstream oss;
oss << NumericValue;
return oss.str();
}
Nếu bạn đang làm việc với std::wstringloại chuỗi, bạn phải thích std::wstringstreamhoặc std::wostringstreamthay thế.
template <class T>
std::wstring YourClass::NumericToString(const T & NumericValue)
{
std::wostringstream woss;
woss << NumericValue;
return woss.str();
}
nếu bạn muốn loại ký tự trong chuỗi của mình có thể chọn được trong thời gian chạy, bạn cũng nên đặt nó thành một biến mẫu.
template <class CharType, class NumType>
std::basic_string<CharType> YourClass::NumericToString(const NumType & NumericValue)
{
std::basic_ostringstream<CharType> oss;
oss << NumericValue;
return oss.str();
}
Đối với tất cả các phương pháp trên, bạn phải bao gồm hai tệp tiêu đề sau.
#include <string>
#include <sstream>
Lưu ý rằng, đối số NumericValuetrong các ví dụ trên cũng có thể được chuyển dưới dạng std::stringhoặc std::wstringđược sử dụng với các phiên bản std::ostringstreamvà std::wostringstreamphiên bản tương ứng. Nó không cần thiết NumericValuephải là một giá trị số.
Từ bộ nhớ, bạn gọi stringstream::str()để lấy std::stringgiá trị ra.