'Dan C ++ ' std::stringstream
ya nasıl dönüştürebilirim std::string
?
Dize akışında bir yöntem çağırmam gerekir mi?
'Dan C ++ ' std::stringstream
ya 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::stringstream
daha genel bir araçtır. std::ostringstream
Bu ö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::wstring
Dizge türleriyle çalışıyorsanız , bunun yerine std::wstringstream
veya 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>
NumericValue
Yukarıdaki örneklerdeki bağımsız değişkenin , sırasıyla ve örnekleriyle birlikte std::string
veya std::wstring
olarak kullanılabileceğini unutmayın . Nümerik değer olması gerekli değildir .std::ostringstream
std::wostringstream
NumericValue
Hafızadan, değeri ortaya çıkarmak stringstream::str()
için std::string
ararsınız.