Text serileştirme
- C++ kursu
- İleri seviye
- Ders 50/83
- 5 dk
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
#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
#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
struct ____ { std::string name; int age; };
struct Person { std::string name; int age; };
Açıklama: Person yapısı ad ve yaş alanlarını taşır.