#include <iostream>
#include <vector>
#include <fstream>
#include <string>
#include <algorithm>
void ayraç(const std::string& yazi, std::vector<std::string>& liste, char ayırıcı)
{
size_t pozisyon = yazi.find(ayırıcı); // Ayırıcı olarak kullanacağımız boşluk karakterinin
// ilk bulunduğu yeri vericek.
size_t pozBaslangic = 0; // Yazımızı incelemeye başlayacağımız nokta, şuan 0 çünkü en başından
// itibaren incelemek istiyoruz.
while (pozisyon != std::string::npos) // Ayracımız dosyanın sonuna gelmemişse
// yani boşluk karakteri başarılı şekilde bulunduysa
{
liste.push_back(yazi.substr(pozBaslangic, pozisyon - pozBaslangic));
//substr ile başlangıç pozisyonundan boşluk karakteri arasındaki yaziyi buluyoruz
//ve listemize eklemesi için push_back komutunu çağırıyoruz.
pozBaslangic = pozisyon + 1; // pozisyonu bir arttırıyoruz çünkü bulduğumuz kelimelerde
//boşluk karakterinin gözükmesini istemiyoruz.
pozisyon = yazi.find(ayırıcı, pozBaslangic); // bir sonraki boşluk karakterini buluyoruz.
//eğer uygun bir karakter bulunursa döngü kaldığı yerden devam edecek.
}
liste.push_back((yazi.substr(pozBaslangic, std::min(pozisyon, yazi.size()) - pozBaslangic + 1)));
//while döngüsünden çıktığımıza göre başka boşluk karakteri bulamadık demektir, en son bulduğumuz
//karakterden sonrasını alarak en son kelimemizi de bulmuş oluyoruz ve listemize ekliyoruz.
}
int main()
{
std::ifstream dosyamiz;
dosyamiz.open("dosya.txt"); // Dosyamızı açıyoruz
std::string yazininTamamı; //Çok satırlı bir dosyamız olabileceğini varsayarak bu programı
// yazdım burdaki amaç dosyamızdaki tüm satırları tek tek okuyarak okuduğumuz verilerin tamamını
// tek bir değişken içerisine yazmak bu sayede kolaylıkla dosyamızı inceleyebiliriz.
std::string satır; //Satırları tek tek alırken kullanıcaz.
while (std::getline(dosyamiz,satır)) //Dosyamızdaki satırları sıra sıra okuyoruz ve satır
// değişkenimize yazıyoruz.
{
yazininTamamı.append(satır+' '); //Her satır sonrası boşluk karakteri ekliyoruz ki
//programımız yeni satırı yeni kelime olarak algılayabilsin.
}
std::vector<std::string> liste; //Ayırdığımız kelimeleri tutacak olan dinamik dizimiz.
ayraç(yazininTamamı, liste, ' '); //Ayraç fonksiyonumuzu çağırıyoruz parametreler şu şekilde;
// incelenecek yazı, ayrılan kelimelerin yazılacağı dinamik dizi, ayırmak için kullanılan karakter
for (int i = 0; i < liste.size() - 1 ; i++) {
std::cout << "Liste[" << i << "]: " << liste[i] << std::endl;
}
}