Ło panie. Ciężki błąd. Na końcu wyrazów wypisujesz '\0', którego nie widać w konsoli, ale spojowi się output nie zgadza. Czemu?
dowolny_string[dowolny_string.length()] == '\0'
A ostatnia wartość i w Twojej pętli to właśnie długość stringa:
i<=dlugosc
Po dodaniu warunku do 23. linijki wszystko śmiga(nie twierdze, że to dobry sposób naprawienia błędu, ale możesz się przekonać, że Cię nie oszukuje :D)
if (i != dlugosc) cout << napis[i];