C++
Ö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.
Örnek çözümü göster
#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;
}
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.
Örnek çözümü göster
#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;
}
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.
Kendini test et
-
Hangi fonksiyon bir satırın tamamını okur?
std::ifstream in("veri.txt");
- in >> line
- std::getline(in, line)
- in.is_open()
- in.close()
Cevabı göster
std::getline(in, line) — std::getline satırın tamamını okur.
-
is_open kontrolünü tamamla
if (in.____()) { std::cout << "Açık"; }
Cevabı göster
if (in.is_open()) { std::cout << "Açık"; }
Sıradaki ders: istringstream