В чем разница между std::string::c str и std::string::data? [дубликат]
На этот вопрос уже есть ответ здесь:
- string c_str () vs. data () 5 ответов
Зачем мне вообще звонить?std::string::data()
кончено std::string::c_str()
? Несомненно, здесь есть какой-то метод для безумия стандарта...
3 ответа:
C_str () возвращает указатель на данные с добавлением байта NUL, поэтому вы можете использовать возвращаемое значение как "C string".
Data () возвращает указатель на данные без каких-либо изменений.
Используйте c_str (), если код, который вы используете, предполагает, что строка завершается NUL (например, любая функция, написанная для обработки строк C).
Теперь в MS STL 10.0 нет никакой разницы, так как я вижу это в заголовке:
...\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()); }