Bir yazı öğesini, onu oluşturan kelimelerine ayırmanın birden fazla yöntemi var. Hatta bu işlemi STL ile göstereceğimden daha hızlı bir şekilde yapabilirsiniz. Ama C++ ın nasıl çalışabildiğine dair güzel bir örnek olması açısından, string olarak gelen bir içeriği string ve char alan bir fonksiyon ile parçalarına ayırıp, sonucu vector değerinde veren bir örneği uygulayacağım:
int main(){
string hikaye{"The mind is everything what you think you become"};
vector<string> sonucVektoru{kelimelereAyirici(hikaye, ' ')};
for(auto kelime:sonucVektoru){
cout << kelime << endl;
}
return 0;
}
Bu C++ programımızın main fonksiyonu. İlk satırda parçalamak istediğimiz içeriği tanımlıyoruz, ikincisinde sonuç vektörümüzü tanımlıyoruz. For döngüsü de elde ettiğimiz sonuç vektörünün içindeki her kelimeyi satır satır ekrana basmamızı sağlıyor. Dikkat edebileceğiniz gibi sonuç vektörünü tanımlarken, kelimelereAyirici adlı bir fonksiyon çağırıyorum, bunu daha tanımlamadım, bu fonksiyonun ilk parametresi kelimelerine ayırmak istediğimiz içerik, ikinci parametresi ise bu ayırma işlemini hangi karakterlerden itibaren yapacağımız ki burada kendisi boşluk karakteridir. Main fonksiyonun öncesinde ise bu ayırma işlemini yapan fonksiyonu tanımlıyorum:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
const vector<string> kelimelereAyirici(const string& gelen, const char& ayiriciKarakter){
string kelimeOlusturucu{""};
vector<string> sonucVektoru;
for(auto karakter:gelen){
if(karakter != ayiriciKarakter){
kelimeOlusturucu += karakter;
} else if(karakter == ayiriciKarakter && kelimeOlusturucu != ""){
sonucVektoru.push_back(kelimeOlusturucu);
kelimeOlusturucu = "";
}
}
if(kelimeOlusturucu != ""){
sonucVektoru.push_back(kelimeOlusturucu);
}
return sonucVektoru;
}
int main(){
string hikaye{"The mind is everything what you think you become"};
vector<string> sonucVektoru{kelimelereAyirici(hikaye, ' ')};
for(auto kelime:sonucVektoru){
cout << kelime << endl;
}
return 0;
}
Görüldüğü üzere kelimelereAyirici fonksiyonu dahilinde, boşluk karakterine gelene kadar tamamlayacağım kelime için bir oluşturucu string tanımlıyorum. Gelen içeriğin her karakteri üzerinde dolaşırken, boşluğa geldiğim zaman sıfırlayıp sonuç vektörüne atmak üzere bu stringi if else ifadesi ile oluşturuyorum. Tüm gelenler bittiğinde de işlemi bitiriyorum.