Ayrıştırma için Dize Akışı stringstream
Metni belirteçlere ayırmak ve türlendirilmiş değerlere ayrıştırmak için std::stringstream kullanın.
Ayrıştırma için Dize Akışı stringstream, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C++ Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C++ Academy kursu toplamda 4 dersten oluşur.
stringstream Nedir?
std::stringstream, bir dizeyi iostream arayüzüyle sarar. cin veya cout gibi, >> ve << ile bu akıştan okuyup bu akışa yazabilirsiniz.
#include <sstream>
std::stringstream ss;stringstream ile Dize Oluşturma
Karışık türlerden karmaşık dizeler oluşturmak için kullanın. Sonucu almak için .str() çağrısını yapın.
std::stringstream out;
out << "User: " << name << ", Age: " << age;
std::string result = out.str();stringstream ile Ayrıştırma
Bir dizeden başlatın ve değerleri >> ile çıkarın. Boşluk karakterlerine göre belirteçlere ayırır.
std::stringstream in("42 3.14 hello");
int i; double d; std::string s;
in >> i >> d >> s;Bir Satırı Belirteçlere Ayırma
Tek seferde bir satırı belirteçlere ayırmak için getline işlevini stringstream ile birleştirin.
std::string line = "1 2 3 4 5";
std::stringstream ss(line);
int n;
while (ss >> n) {
std::cout << n * n << " ";
}
// 1 4 9 16 25Ayraç Üzerinden Bölme
Virgüllere, noktalı virgüllere veya herhangi bir karaktere göre bölmek için stringstream üzerinde getline işlevine bir ayraç geçirin.
std::string csv = "apple,banana,cherry";
std::stringstream ss(csv);
std::string fruit;
while (std::getline(ss, fruit, ',')) {
std::cout << fruit << "\n";
}istringstream ve ostringstream
Üç tür bulunur:
std::istringstream— yalnızca okumastd::ostringstream— yalnızca yazmastd::stringstream— her ikisi
Açıklık açısından en dar kapsamlı olanı kullanın.
Ayrıştırma Hatalarını Denetleme
Çıkarma başarısız olursa (örneğin tür yanlışsa) akış bir fail biti ayarlar. Çıkarmadan sonra !ss veya ss.fail() ifadesini denetleyin.
std::stringstream ss("not_a_number");
int x;
if (!(ss >> x)) {
std::cout << "Parse failed";
}stringstream'i Sıfırlama
Bir stringstream'i yeniden kullanmak için durumunu ve içeriğini temizleyin.
std::stringstream ss;
ss << "first";
ss.str(""); // clear contents
ss.clear(); // clear flags
ss << "second";Sayıdan Dizeye
Basit dönüştürmeler için std::to_string, stringstream kullanmaktan daha kısadır.
std::string s = std::to_string(42); // "42"
std::string p = std::to_string(3.14); // "3.140000"Akışlar Olmadan Diziden Sayıya
std::stoi, std::stod ve std::stoll, dizelerden sayıları ayrıştırır ve hatalı girdide istisna fırlatır.
int n = std::stoi("42");
double d = std::stod("3.14");
// std::stoi("xyz") throws std::invalid_argumentC++17 std::from_chars
Maksimum hız için <charconv> içindeki std::from_chars, istisna fırlatmadan veya bellek ayırmadan ayrıştırma yapar. Yoğun kullanılan kod yolları için idealdir.
Hızlı Kontrol
std::stringstream kullanmak için hangi başlık dosyasını eklemeniz gerekir?
Özet
std::stringstream, kolay ayrıştırma ve biçimlendirme için dizeleri akışlara dönüştürür. Ayraçlar üzerinden bölmek için bunu std::getline ile birleştirin. Basit durumlarda std::to_string ve std::stoi kullanmayı tercih edin.
Sıkça Sorulan Sorular
“Ayrıştırma için Dize Akışı stringstream” dersi ücretsiz mi?
Evet — “Ayrıştırma için Dize Akışı stringstream” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C++ Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C++ Academy kursu toplamda 4 dersten oluşur.
“Ayrıştırma için Dize Akışı stringstream” dersinde ne öğreneceğim?
Metni belirteçlere ayırmak ve türlendirilmiş değerlere ayrıştırmak için std::stringstream kullanın. C++ Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
C++ Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te C++ Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Ayrıştırma için Dize Akışı stringstream” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu C++ Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her C++ Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- std::string ve C Tarzı Karakter Dizileri
- Dize İşlemleri: Birleştirme, Alt Dize, Bulma, Değiştirme
- Ayrıştırma için Dize Akışı stringstream
- Dize Dönüşümleri: to_string ve stoi