Qual è la differenza tra std :: string :: c_str e std :: string :: dati? [duplicare]

StackOverflow https://stackoverflow.com/questions/1534399

  •  20-09-2019
  •  | 
  •  

Domanda

    

Questa domanda ha già una risposta qui:

    
            
  •              stringa c_str () i dati vs. ()                                      6 risposte                          
  •     
    

Perché mai dovrei voler chiamare std::string::data() su std::string::c_str() ? Sicuramente c'è qualche metodo per la follia della norma qui ...

È stato utile?

Soluzione

c_str () garantisce terminazione NUL. dati () non lo fa.

Altri suggerimenti

c_str () restituisce un puntatore ai dati con un byte NUL aggiunto in modo da poter utilizzare il valore di ritorno come una "stringa C".

Dati () restituisce un puntatore ai dati senza alcuna modifica.

Utilizzare c_str () se il codice si utilizza assume una stringa è termina con NUL (come ad esempio una funzione scritta per gestire stringhe C).

Ora in MS STL 10.0 non ci sembra essere alcuna differenza, come vedo questo nell'intestazione:

... \ Microsoft Visual Studio 10.0 \ VC \ include \ xstring

const _Elem *c_str() const
    {   // return pointer to null-terminated nonmutable array
    return (_Myptr());
    }

const _Elem *data() const
    {   // return pointer to nonmutable array
    return (c_str());
    }

Quindi ritornano la stessa cosa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top