Özet - Dosya I/O
- C++ kursu
- Orta seviye
- Ders 93/116
- 5 dk
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
#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
#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
#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
#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?
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
if (in.____()) { std::cout << "Açık"; }
if (in.is_open()) { std::cout << "Açık"; }
Açıklama: is_open() dosya açık mı diye sorgular.