CodeBlanks Logo Icon CodeBlanks

String akımları

std::istringstream ve ostringstream ile dize akımlarını öğrenirsin.

Dize akımları: istringstream

Bazı durumlarda bir dizenin içindeki sayıları veya sözcükleri parça parça çekmen gerekir. C++ bunun için istringstream akımını sunar; bir dizeyi, tıpkı cin gibi >> operatörüyle okuyabilirsin.

#include <sstream>
istringstream iss("10 20 30");
int a, b, c;
iss >> a >> b >> c;

Burada iss nesnesi dizeyi bir akım gibi davranır; üç int değer sırayla çıkarılır. Boşluklar otomatik atlanır. Bu yöntem, özellikle boşlukla ayrılmış veriyi çözümlemek için kullanışlıdır.

ostringstream ile biçimleme

Diğer yandan ostringstream birçok parçayı tek bir dizede birleştirmek için kullanılır. << operatörüyle değerleri akıma yazarsın, sonunda .str() metoduyla tüm akımı bir string olarak alırsın.

ostringstream oss;
oss << "Skor: " << 95;
string sonuç = oss.str();

Burada sonuç dizesi "Skor: 95" olur. Bu yöntem, to_string ile uğraşmadan farklı türlerden değerleri rahatça birleştirmeni sağlar; özellikle hata mesajı veya rapor oluştururken yararlıdır.

Uygulama Dizeden iki sayı oku ve topla

#include <sstream> başlığını ekle. istringstream iss("15 25"); ile bir okuma akımı oluştur. >> operatörüyle iki int değişkene sayıları çek, sonra cout ile toplamlarını yazdır.

Başlangıç kodu

main.cpp
#include <iostream>
#include <string>
// sstream başlığını ekle
using namespace std;

int main() {
    // istringstream ile "15 25" dizesinden iki sayı oku
    // toplamlarını cout ile yazdır
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>
#include <string>
#include <sstream>
using namespace std;

int main() {
    istringstream iss("15 25");
    int a, b;
    iss >> a >> b;
    cout << a + b << endl;
    return 0;
}

Beklenen çıktı

40

Soru ve cevaplar

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

1 Bir dizedeki boşlukla ayrılmış sayıları okumak için hangisi uygundur?

  • istringstream Doğru cevap
  • ostringstream
  • to_string
  • stoi

Açıklama: istringstream, dizeyi okuma akımı olarak kullanır.

2 Boşluğu doldur: ostringstream tanımı

Soru
#include <sstream>
using namespace std;
int main() {
    ____ oss;
    oss << "Merhaba";
    return 0;
}
Cevap
#include <sstream>
using namespace std;
int main() {
    ostringstream oss;
    oss << "Merhaba";
    return 0;
}

Açıklama: ostringstream yazma akımı oluşturur.

3 Akım türünü göreviyle eşleştir

Kavram Anlamı
istringstream Dizeden okur
ostringstream Dizeye yazar
.str() Akımı dize olarak verir

Başlangıç bölümündeki tüm dersler