Qual é a diferença entre std :: string :: c_str e std :: string :: data? [duplicado
Pergunta
Esta pergunta já tem uma resposta aqui:
- string c_str () vs. data () 6 respostas
Por que eu gostaria de ligar std::string::data()
sobre std::string::c_str()
? Certamente existe algum método para a loucura do padrão aqui ...
Solução
C_STR () garante a terminação nua. dados () não.
Outras dicas
C_STR () Retorne um ponteiro para os dados com um byte nul anexado para que você possa usar o valor de retorno como uma "string c".
Data () retorna um ponteiro para os dados sem modificações.
Use c_str () se o código que você estiver usando assume que uma string for finalizada (como qualquer função gravada para lidar com strings C).
Agora, no MS STL 10.0, não parece haver diferença, pois vejo isso no cabeçalho:
... Microsoft Visual Studio 10.0 VC Incluir 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());
}
Então eles retornam a mesma coisa.