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