CodeBlanks Logo Icon CodeBlanks

Özet - Dosya I/O

ifstream, ofstream ve getline'ı birleştirerek bir not defteri yazarsın.

Özet - Dosya I/O

Bu grupta dosya giriş ve çıkışını öğrendin. std::ifstream okur, std::ofstream yazar, std::fstream ikisini birden yapar.

is_open() ile acilmayı kontrol edersin; std::getline ile satır satır okursun. >> boşlukla ayrılmış parçaları çekerken, std::getline yeni satır karakterine kadar okur. Bu iki aracı birlikte kullanarak yapılandırılmış metin dosyalarını işleyebilirsin. Şimdi iki ödevle öğrendiklerini pekiştireceksin: önce satır sayma, sonra sayı toplama.

Uygulama Dosyadaki satır sayısını say

Başlangıç kodu veri.txt dosyasına üç satır yazar. Sen std::ifstream ile dosyayı aç, while (std::getline(in, line)) döngüsüyle satır sayısını say ve std::cout ile yazdır.

Başlangıç kodu

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

int main() {
    std::ofstream out("veri.txt");
    out << "Satır 1\nSatır 2\nSatır 3";
    out.close();

    // getline ile satır sayısını say ve yazdır

    return 0;
}

Örnek çözüm

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

int main() {
    std::ofstream out("veri.txt");
    out << "Satır 1\nSatır 2\nSatır 3";
    out.close();

    std::ifstream in("veri.txt");
    std::string line;
    int s = 0;
    while (std::getline(in, line)) {
        s++;
    }
    std::cout << s;
    return 0;
}

Beklenen çıktı

3

Uygulama Dosyadaki sayıları topla

Başlangıç kodu sayilar.txt dosyasına 10 20 30 yazar. Sen std::ifstream ile dosyayı aç, while (in >> n) döngüsüyle sayıları oku, topla ve std::cout ile yazdır.

Başlangıç kodu

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

int main() {
    std::ofstream out("sayilar.txt");
    out << "10 20 30";
    out.close();

    // Sayıları oku, topla ve yazdır

    return 0;
}

Örnek çözüm

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

int main() {
    std::ofstream out("sayilar.txt");
    out << "10 20 30";
    out.close();

    std::ifstream in("sayilar.txt");
    int n, t = 0;
    while (in >> n) {
        t += n;
    }
    std::cout << t;
    return 0;
}

Beklenen çıktı

60

Bölüm sonu

Dosya giriş ve çıkışını tamamladın. Artık std::ifstream ile okuyabiliyor, std::ofstream ile yazabiliyor, std::fstream ile ikisini birlikte yapabiliyorsun.

is_open() ile güvenli açma kontrolü yapıyor, std::getline ile satır satır okuyorsun. Bu beş kavram — okuma, yazma, birleşik akış, açık kontrolü ve satır okuma — C++'ta dosya işlemenin temelini oluşturuyor. Sonraki gruplarda string akışları ve move semantiği gibi konular seni bekliyor.

Soru ve cevaplar

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

1 Hangi fonksiyon bir satırın tamamını okur?

main.cpp
std::ifstream in("veri.txt");
  • in >> line
  • std::getline(in, line) Doğru cevap
  • in.is_open()
  • in.close()

Açıklama: std::getline satırın tamamını okur.

2 is_open kontrolünü tamamla

Soru
if (in.____()) { std::cout << "Açık"; }
Cevap
if (in.is_open()) { std::cout << "Açık"; }

Açıklama: is_open() dosya açık mı diye sorgular.

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