Was ist der Unterschied zwischen std :: string :: c_str und std :: string :: data? [Duplikat]

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

  •  20-09-2019
  •  | 
  •  

Frage

    

Diese Frage bereits eine Antwort hier:

    
            
  •              Zeichenfolge c_str () vs. data ()                                      6 Antworten                          
  •     
    

Warum sollte ich jemals nennen wollen std::string::data() über std::string::c_str() ? Sicherlich gibt es einige Verfahren, um den Wahnsinn des Standard hier ...

War es hilfreich?

Lösung

c_str () garantiert NUL Kündigung. Daten () nicht.

Andere Tipps

c_str () gibt einen Zeiger auf die Daten mit einer NUL-Byte angehängt, so dass Sie den Rückgabewert als „C-String“ verwenden können.

data () gibt einen Zeiger auf die Daten ohne Modifikationen.

Mit c_str (), wenn der Code, den Sie verwenden übernimmt eine Zeichenfolge ist NUL beendet (wie jede Funktion Griff C-Strings geschrieben).

Jetzt in MS STL 10.0 Es scheint keinen Unterschied zu sein, da sehe ich in der Kopfzeile:

... \ 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());
    }

So sie die gleiche Sache zurück.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top