CodeBlanks Logo Icon CodeBlanks

Özet - Stringstream

istringstream ve ostringstream'i birleştirerek bir CSV ayrıştırıcı yazarsın.

Özet - Stringstream

Bu grupta dize akışlarını öğrendin. istringstream dizeden okur, ostringstream dizeye yazar, stringstream ikisini birden yapar.

Tip dönüşümünde istringstream ile dizeyi sayıya, ostringstream ile sayıyı dizeye çevirirsin. Biçimlendirme için std::fixed ve std::setprecision araçlarını kullanırsın. Şimdi iki ödevle öğrendiklerini pekiştireceksin: önce dizeden sayı ayrıştırma, sonra sayı biçimlendirme.

Uygulama Dizeden sayıları ayıkla ve topla

Başlangıç kodunda veri dizesi "5 10 15" içeriyor. std::istringstream ile üç sayıyı çek, topla ve std::cout ile yazdır.

Başlangıç kodu

main.cpp
#include <iostream>
#include <sstream>
#include <string>

int main() {
    std::string veri = "5 10 15";
    // Sayıları ayıkla ve topla

    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>
#include <sstream>
#include <string>

int main() {
    std::string veri = "5 10 15";
    std::istringstream iss(veri);
    int a, b, c;
    iss >> a >> b >> c;
    std::cout << a + b + c;
    return 0;
}

Beklenen çıktı

30

Uygulama Sayıyı biçimli dizeye çevir

Başlangıç kodunda pi değişkeni 3.14159. std::ostringstream ile std::fixed ve std::setprecision(2) kullanarak pi'yi biçimle. .str() ile dizeyi al ve std::cout ile yazdır.

Başlangıç kodu

main.cpp
#include <iostream>
#include <sstream>
#include <iomanip>
#include <string>

int main() {
    double pi = 3.14159;
    // pi'yi iki ondalıkla biçimle ve yazdır

    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>
#include <sstream>
#include <iomanip>
#include <string>

int main() {
    double pi = 3.14159;
    std::ostringstream oss;
    oss << std::fixed << std::setprecision(2) << pi;
    std::cout << oss.str();
    return 0;
}

Beklenen çıktı

3.14

Bölüm sonu

Dize akışlarını tamamladın. Artık istringstream ile dizeden okuyabiliyor, ostringstream ile dizeye yazabiliyor, stringstream ile iki yön kullanabiliyorsun.

Tip dönüşümü ve biçimlendirme için dize akışları güçlü araçlardır. Sonraki gruplarda move semantiği ve operatör aşırı yükleme gibi ileri konular seni bekliyor. Öğrendiğin akış kavramı, hem dosya hem dize işlemlerinde ortaktır; bu yüzden çok değerlidir.

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Akışı rolüne eşle

Kavram Anlamı
istringstream Dizeden okuma
ostringstream Dizeye yazma
stringstream İki yön
.str() Dizeyi alma

2 str() ile dizeyi al

Soru
std::string sonuc = oss.____();
Cevap
std::string sonuc = oss.str();

Açıklama: .str() akışın dizesini verir.

Orta seviye bölümündeki tüm dersler