Nie wiem do czego służy ta flaga (dlatego tez zmienne powinny miec cokolwiek mówiące nazwy). Ciężko się czyta ten kod.
Ja bym zrobił to tak. Zobacz czy to przyjmie. Jeśli nie, to ja też nie rozumiem.
std::stringstream s;
std::string str, str2;
std::getline(std::cin, str);
s << str;
s >> str2;
std::cout << str2;
while(s >> str2)
{
str2[0] = ::toupper(str2[0]);
std::cout << str2;
}