Mam pytanie odnośnie działania stringa w pętli while zapisywanego za pomocą cin >>. Jak wiadomo cin zapisuje pierwsze słowo aż do spacji. W takim razie nie mogę logicznie sobie wytłumaczyć w jaki sposób działa ten kod.
#include <iostream>
#include <cctype>
#include <string>
using namespace std;
char tab[12] = { 'a', 'e', 'i', 'o', 'u', 'y', 'A', 'E', 'I', 'O', 'U', 'Y' };
string slowo;
int spolgloski = 0, samogloski = 0, inne = 0;
int main()
{
cout << "Podawaj slowa (pojedyncze q konczy):\n";
while (cin >> slowo && slowo != "q" )
{
if (isalpha(slowo[0]))
{
bool Flaga=false;
for (int i = 0; i < 12; i++)
if (slowo[0] == tab[i])
{
samogloski++; Flaga=true; break;
}
if(Flaga==false) spolgloski++;
}
else inne++;
}
cout << spolgloski << " slow zaczyna sie od spolglosek.\n";
cout << samogloski << " slow zaczyna sie od samoglosek.\n";
cout << inne << " slow nie zalicza sie do zadnej z tych kategorii.";
return 0;
}
a dokładnie ten fragment
while (cin >> slowo && slowo != "q" )
Jak to jest, że pętla przy wpisaniu jakiegoś zdania nie działa wyłącznie na podstawie pierwszego słowa tylko odnosi się do każdego słowa po kolei?
Pozdrawiam,
Grzesiek