Comment faire pour convertir un std::string const char* ou char*?

Comment puis-je convertir un std::string à un char* ou un const char*?

  • Au lieu de: char * writable = new char[str.size() + 1]; Vous pouvez utiliser char inscriptible[str.size() + 1]; Alors vous n'avez pas besoin de s'inquiéter à propos de la suppression écriture ou la gestion des exceptions.
  • Vous ne pouvez pas utiliser str.size (), sauf si la taille est connue à la compilation, il peut aussi débordement de la pile si la taille fixe de la valeur est énorme.
  • char* result = strcpy((char*)malloc(str.length()+1), str.c_str());
  • strcpy et malloc ne sont pas vraiment le C++ façon.
  • vous voulez dire qu'ils sont imaginaires?
  • Non, mais char* dest = new char[str.length() + 1]; std::copy(str.begin(), str.end(), dest) serait plus idiomatiques C++. strcpy() et malloc() ne sont pas mauvais ou problématiques, mais il semble incohérent d'utiliser une chaîne C++ et C installations de la bibliothèque C++ d'équivalents dans le même bloc de code.
  • stringName.c_str() tant que c'est un std::string, std::wstring, ou quelque chose comme un winrt::hstring.

InformationsquelleAutor user37875 | 2008-12-07