Jeżeli chodzi Ci o opcję pierwszą, to nie działa z prostej przyczyny. Na początku inicjalizujesz zmienną dlugosc jako napis.lenght(), tylko, że w tym momencie napis ma długość zero więc zmienna dlugosc w tym momencie też ma taką samą wartość. To, że zainicjalizowałeś tą zmienną w taki sposób nie oznacza, że przez cały program będzie przyjmowała wartość długości napisu. To co należy zrobić:
1) Na początku najlepiej ustaw sobie po prostu int dlugosc
2) Pod getline ustaw jej wartość.
getline(cin, napis);
dlugosc = napis.length();