CodeBlanks Logo Icon CodeBlanks

Text serileştirme

Text serileştirme ile insan okunabilir formatta öğrenirsin.

Text serileştirme nedir?

Text serileştirme, nesne verisini insan tarafından okunabilir metin olarak dosyaya yazar. C++'ta std::ofstream'in << (çıkış) işleci kullanılır. Geri okurken std::ifstream'in >> (giriş) işleci kullanılır.

Örnek: ofs << name << " " << age; bir ad ve yaş değerini boşlukla ayırarak yazar. ifs >> name >> age; ile geri okunur. >> işleci boşluğa kadar okur, bu yüzden değerler arasında boşluk ya da satır kırılımı olmalıdır. Text serileştirme yavaştır ama bir metin editöründe incelenebilir ve hata ayıklamaya uygundur.

Yapı serileştirme örneği

Bir Person yapısını text olarak serileştirmek için önce alanları << ile yazarsın, aralara boşluk koyarsın. Geri okurken >> ile aynı sırayla okursun. Sıra önemlidir: yazılış ve okunuş sırası aynı olmalıdır.

Örnek: yazma tarafı ofs << p.name << " " << p.age;. Okuma tarafı ifs >> name >> age;. Dosyada "Ayşe 30" yazar ve aynı şekilde okunur. İkinci bir alan eklemek istersen << " " << p.city eklersin ve okurken de >> city eklersin. Bu, basit ama sıraya bağımlı bir yöntemdir.

Uygulama Person yapısını text serileştir

struct Person { std::string name; int age; }; tanımla. std::string name = "Ayşe"; ve int age = 30; ver. std::ofstream ofs("person.txt") ile ofs << name << " " << age; yaz. std::ifstream ifs("person.txt") ile ifs >> loaded_name >> loaded_age; oku. std::cout << loaded_name << " " << loaded_age; yazdır.

Başlangıç kodu

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

// Person yapısını tanımla, dosyaya yaz ve geri oku

int main() {
    // ofs ve ifs çağrılarını ekle
    return 0;
}

Örnek çözüm

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

struct Person {
    std::string name;
    int age;
};

int main() {
    std::string name = "Ayşe";
    int age = 30;
    std::ofstream ofs("person.txt");
    ofs << name << " " << age;
    ofs.close();

    std::string loaded_name;
    int loaded_age;
    std::ifstream ifs("person.txt");
    ifs >> loaded_name >> loaded_age;
    ifs.close();

    std::cout << loaded_name << " " << loaded_age;
    return 0;
}

Beklenen çıktı

Ayşe 30

Soru ve cevaplar

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

1 İşleci rolüne eşle

Kavram Anlamı
ofs << value Metin yazar
ifs >> value Metin okur
" " (boşluk) Alan ayıracı
std::ofstream Çıkış dosyası

2 >> işleci nasıl okur?

  • Tüm satırı tek seferde
  • Yalnızca sayıları
  • Dosya sonuna kadar
  • Boşluğa kadar okur Doğru cevap

Açıklama: >> işleci boşluk ya da satır kırılımına kadar okur.

3 Yapı adını tamamla

Soru
struct ____ { std::string name; int age; };
Cevap
struct Person { std::string name; int age; };

Açıklama: Person yapısı ad ve yaş alanlarını taşır.

İleri seviye bölümündeki tüm dersler