'Dan C ++ ' std::stringstreamya nasıl dönüştürebilirim std::string?
Dize akışında bir yöntem çağırmam gerekir mi?
'Dan C ++ ' std::stringstreamya nasıl dönüştürebilirim std::string?
Dize akışında bir yöntem çağırmam gerekir mi?
Yanıtlar:
yourStringStream.str()
.Str () - yöntemini kullanın :
Temel dize nesnesinin içeriğini yönetir.
1) Çağrılıyormuş gibi temel dizenin bir kopyasını döndürür
rdbuf()->str().2) Altta yatan dizenin içeriğini, sanki çağırarak değiştirir
rdbuf()->str(new_str)...notlar
Str tarafından döndürülen temel dizenin kopyası, ifadenin sonunda yok edilecek geçici bir nesnedir, bu nedenle doğrudan (örneğin içinde )
c_str()sonucunu çağırmak sarkan bir göstericiyle sonuçlanır ...str()auto *ptr = out.str().c_str();
std::stringstream::str() aradığınız yöntemdir.
İle std::stringstream:
template <class T>
std::string YourClass::NumericToString(const T & NumericValue)
{
std::stringstream ss;
ss << NumericValue;
return ss.str();
}
std::stringstreamdaha genel bir araçtır. std::ostringstreamBu özel iş için daha uzmanlaşmış sınıfı kullanabilirsiniz .
template <class T>
std::string YourClass::NumericToString(const T & NumericValue)
{
std::ostringstream oss;
oss << NumericValue;
return oss.str();
}
std::wstringDizge türleriyle çalışıyorsanız , bunun yerine std::wstringstreamveya tercih etmelisiniz std::wostringstream.
template <class T>
std::wstring YourClass::NumericToString(const T & NumericValue)
{
std::wostringstream woss;
woss << NumericValue;
return woss.str();
}
Dizenizin karakter türünün çalışma zamanı seçilebilir olmasını istiyorsanız, onu bir şablon değişkeni yapmalısınız.
template <class CharType, class NumType>
std::basic_string<CharType> YourClass::NumericToString(const NumType & NumericValue)
{
std::basic_ostringstream<CharType> oss;
oss << NumericValue;
return oss.str();
}
Yukarıdaki tüm yöntemler için aşağıdaki iki başlık dosyasını eklemelisiniz.
#include <string>
#include <sstream>
NumericValueYukarıdaki örneklerdeki bağımsız değişkenin , sırasıyla ve örnekleriyle birlikte std::stringveya std::wstringolarak kullanılabileceğini unutmayın . Nümerik değer olması gerekli değildir .std::ostringstreamstd::wostringstreamNumericValue
Hafızadan, değeri ortaya çıkarmak stringstream::str()için std::stringararsınız.