Nasıl std::stringstream
dan C++ ye std::string
dönüştürebilirim?C++ ile stringstream'den string'e nasıl dönüşür?
Dize akışında bir yöntemi çağırmalı mıyım?
Nasıl std::stringstream
dan C++ ye std::string
dönüştürebilirim?C++ ile stringstream'den string'e nasıl dönüşür?
Dize akışında bir yöntemi çağırmalı mıyım?
yourStringStream.str()
Bellekten std :: string değerini almak için stringstream :: str() yöntemini çağırırsınız.
kullanımı .str()-method:
yatan teli nesnesinin içeriğini yönetir.
1)
rdbuf()->str()
numaralı telefonu arayarak temel dizenin bir kopyasını döndürür.2) ... sanki
rdbuf()->str(new_str)
arayarak yatan dize içeriğini değiştirirNotlar
str tarafından döndürülen yatan dize kopya olarak tahrip edilecek geçici bir nesne olduğunu ifade ucu, bu nedenle, doğrudan ... bir sarkan işaretçi sonuçları (
auto *ptr = out.str().c_str();
örneğin)str()
sonucunac_str()
çağrı
+1, diğer eşdeğer yanıtlardan farklı olarak bir bağlantı sağladığınız için. – rmeador
strstream arabellekini .str() yöntemini çağırmadan önce '\ 0' ile sonlandırmanız gerektiğini eklemek isterim. Aksi halde dizgiyi dökerken kötü karakterler alırsınız. Aradığınız yöntemdir.
Bu durum böyle görünmüyor. – Carcigenicate
Stringstream ve [strstream] (http://kera.name/articles/2008/09/tomalaks-tuesday-tip-2-string-streams/) arasında kafanız karışıyor. –
Anlaşılan, bu strstream değil stringstream açıklanmaktadır. – bpeikes
std::stringstream::str()
, sizin yönteminizdir. std::stringstream
ile
:
template <class T>
std::string YourClass::NumericToString(const T & NumericValue)
{
std::stringstream ss;
ss << NumericValue;
return ss.str();
}
std::stringstream
daha genel bir araçtır. Bu özel iş için daha özel bir sınıf olan std::ostringstream
'u kullanabilirsiniz.
template <class T>
std::string YourClass::NumericToString(const T & NumericValue)
{
std::ostringstream oss;
oss << NumericValue;
return oss.str();
}
dizelerin std::wstring
türüyle çalışıyorsanız, siz std::wstringstream
veya std::wostringstream
yerine tercih edilmelidir. Eğer string karakter tipi çalışma zamanı olabilir seçilebilir istiyorsanız
template <class T>
std::wstring YourClass::NumericToString(const T & NumericValue)
{
std::wostringstream woss;
woss << NumericValue;
return woss.str();
}
, ayrıca bir şablon değişkeni yapmalıdır.
template <class CharType, class NumType>
std::basic_string<CharType> YourClass::NumericToString(const NumType & NumericValue)
{
std::basic_ostringstream<CharType> oss;
oss << NumericValue;
return oss.str();
}
üzerindeki tüm yöntemler için aşağıdaki iki başlık dosyaları içermelidir. Yukarıda da
std::string
veya
std::wstring
olarak geçirilebilir örneklerde argüman
NumericValue
sırasıyla
std::ostringstream
ve
std::wostringstream
örneklerle kullanılacak
#include <string>
#include <sstream>
not edin. NumericValue
'un sayısal bir değer olması gerekli değildir.
Böylesine korkunç bir quesiton için bu çok fazla çaba. –
Önceki soruya verilen yanıtları okudun mu? –