Bagaimana cara mengubah dari std::stringstream
ke std::string
dalam C ++?
Apakah saya perlu memanggil metode pada aliran string?
Bagaimana cara mengubah dari std::stringstream
ke std::string
dalam C ++?
Apakah saya perlu memanggil metode pada aliran string?
Jawaban:
</s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> orang </s>
yourStringStream.str()
Gunakan metode .str () - :
Mengelola konten objek string yang mendasari.
1) Mengembalikan salinan string yang mendasari seolah-olah dengan memanggil
rdbuf()->str()
.2) Mengganti konten string yang mendasari seolah-olah dengan memanggil
rdbuf()->str(new_str)
...Catatan
Salinan string yang mendasari dikembalikan oleh str adalah objek sementara yang akan dihancurkan di akhir ekspresi, jadi langsung memanggil
c_str()
hasilstr()
(misalnya dalamauto *ptr = out.str().c_str();
) hasil di penunjuk yang menggantung ...
std::stringstream::str()
adalah metode yang Anda cari.
Dengan std::stringstream
:
template <class T>
std::string YourClass::NumericToString(const T & NumericValue)
{
std::stringstream ss;
ss << NumericValue;
return ss.str();
}
std::stringstream
adalah alat yang lebih umum. Anda dapat menggunakan kelas yang lebih terspesialisasi std::ostringstream
untuk pekerjaan khusus ini.
template <class T>
std::string YourClass::NumericToString(const T & NumericValue)
{
std::ostringstream oss;
oss << NumericValue;
return oss.str();
}
Jika Anda bekerja dengan std::wstring
jenis string, Anda harus memilih std::wstringstream
atau std::wostringstream
sebagai gantinya.
template <class T>
std::wstring YourClass::NumericToString(const T & NumericValue)
{
std::wostringstream woss;
woss << NumericValue;
return woss.str();
}
Jika Anda ingin tipe karakter string Anda dapat dipilih secara run-time, Anda juga harus menjadikannya variabel template.
template <class CharType, class NumType>
std::basic_string<CharType> YourClass::NumericToString(const NumType & NumericValue)
{
std::basic_ostringstream<CharType> oss;
oss << NumericValue;
return oss.str();
}
Untuk semua metode di atas, Anda harus menyertakan dua file header berikut.
#include <string>
#include <sstream>
Perhatikan bahwa, argumen NumericValue
dalam contoh di atas juga dapat diteruskan sebagai std::string
atau std::wstring
digunakan dengan masing-masing instance std::ostringstream
dan std::wostringstream
. Tidak perlu NumericValue
menjadi nilai numerik.
Dari ingatan, Anda memanggil stringstream::str()
untuk mengeluarkan std::string
nilainya.