Qual é a diferença entre std :: string :: c_str e std :: string :: data? [duplicado

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

  •  20-09-2019
  •  | 
  •  

Pergunta

Esta pergunta já tem uma resposta aqui:

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 ...

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top