Bu programı çalıştırıp , string olarak "merhaba" girersem sayaç 7 karakter okuyor. Buraya kadar bir sorun yok. Ama 'merhaba dunya' yazınca sayaç yine 7 okuyor. Bunun sebebi tam olarak nedir. '\0' ifadesi tam olarak nerelere geliyor. Yani kısaca strlen() fonksiyonunu kullanmadan cümle uzunluğunu bulan kodu yazmamda yardımcı olur musunuz?
cin >> x;
Kullandığınızda basitçe string'e bir kelime almış(başlangıç ve bir boşluğa kadar, sizin örneğinizde "merhaba" kısmı) oluyorsunuz).
Tüm cümleyi boşluklarla beraber string'e almak için getline() fonksiyonu kullanabilirsiniz.
Şu şekilde:
C++:
std::string cumle;
std::getline(cin, cumle);
Ayrıca using namespace std kullanmak daha kolay olsa da böyle alışmamanızı tavsiye ederim. Karışıklık yaratabilir.
Edit:
Yazmayı unutmuşum, '\0' normalde C'deki stringlerin (char array ile yaptığınız) sonunu belirtmek için kullanılır. Ancak bunun C++'deki std::string'i C'dekinden farklı, sizin kodunuzun çalışabilmesinin sebebi C++'daki string kütüphanesinde stringinizi C string'i olarak değerlendiren fonksiyonlar olması. Benim tavsiyem boyut fonksiyonu olan size'i kullanmanız. Şöyle: for (int i = 0; i < cumle.size(); i++)