Originariamente inviato da maluz1
ma perchè sostieni che le string del c++ sono diverse da quelle del c anche per il carattere terminatore?
Perché è così. Le stringhe C sono dei semplici array di caratteri, la cui lunghezza non è nota a priori (bisogna andarsi a cercare il carattere di terminazione); std::string invece è una classe, che, tra le altre cose, si tira dietro separatamente la lunghezza dell'array di char incapsula (ovvero, le std::string sono un tipo di counted string), motivo per cui il carattere di terminazione non ha alcun significato particolare (anzi, in una stringa C++ puoi inserire quanti caratteri di terminazione ti pare anche in mezzo alla stringa, senza che questo ne cambi la lunghezza).

In generale quindi se stai lavorando con std::string lascia perdere le funzioni stile C di gestione delle stringhe (strlen, strcmp, ...) e usa invece i metodi di std::string (size(), gli operatori relazionali, ...).

Ti raccomando inoltre di dare una ripassata al tuo manuale di C++ - la distinzione tra std::string e stringhe C è abbastanza fondamentale.