Ho trovato un'apparente contraddizione nel testo c ++ che ha a che fare con il risultato della funzione c_str()
che opera su std:strings
(nella mia copia, la definizione e la contraddizione sono su p1040).
In primo luogo definisce la funzione c_str()
come qualcosa che produce una stringa 'C-style' (a terminazione zero), ma in seguito parla di come un valore c_str di C ++ può aver incorporato un 'C'-style, end- di terminatori di stringa (es. NUL) incorporati nella stringa (definita dal fatto che NUL è stato terminato).
Um ... qualcun altro ritiene che questo sia un "allungamento" della definizione di una C-string oltre la sua definizione? Cioè Penso che ciò significhi, se osservassi la funzione length()
applicata a string
, mostrerà una diversa fine della stringa rispetto all'utilizzo della definizione C di una stringa z, una che può contenere qualsiasi carattere tranne NUL, ed è terminato da NUL.
Probabilmente non mi devo preoccupare nei miei programmi, ma sembra una sottile distinzione che rende un C ++ c_str
, non proprio un 'C' -stringa. Sto fraintendendo questo problema?
Grazie!