C ++ 'da stringstream'den string'e nasıl dönüştürebilirim?


124

'Dan C ++ ' std::stringstreamya nasıl dönüştürebilirim std::string?

Dize akışında bir yöntem çağırmam gerekir mi?


4
Bunu kapsayan önceki sorunuzun yanıtlarını okudunuz mu?

Yanıtlar:



74

.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();


14

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


10

Hafızadan, değeri ortaya çıkarmak stringstream::str()için std::stringararsınız.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.