Przede wszystkim działa tylko dla pierwszej lini wejścia. Zobacz na ideone, które wrzuciłem zamiast Twojego kodu.
Czy Ty sobie tego czasem zbytnio nie skoplikowałeś?
- Wczytaj linie wejścia do stringa s1
- Dla wszystich znaków s1:
a. jeżeli bierzący znak to spacja:
- wstaw następny znak na pierwszą pozycję s2
- odejmij od niego 32
- ustaw ten znak jako string s2
- zamień następny znak w s1 na ten w s2
- usuń spację z s1
Dlaczego te pierwsze 4 kropki to nie po prostu s[i+1] -= 32 ?
Dodatkowo zastanów się co by było gdyby znakiem po usuwanej spacji nie była mała litera.
A tu:
string s2 = "";
s2[0] =
Trochę ryzykujesz patrząc pod [0] w pustym stringu (prawdopodobnie zadziała, ale w jakimś innym programie napiszesz kiedyś s2[10] i się zdziwisz
)