web-dev-qa-db-fra.com

Conversion d'un const char * en std :: string

J'ai un const char * revenu d'une fonction de traitement, et je voudrais le convertir/l'assigner à une instance de std::string pour une manipulation ultérieure. Cela semble être simple, mais je n'ai pas pu trouver de documentation montrant comment cela devrait être fait. De toute évidence, il me manque quelque chose. Appréciation appréciée.

11
Justin Fletcher

std::stringa un constructeur deconst char *. Cela signifie qu'il est légal d'écrire:

const char* str="hello";
std::string s = str;
35
Ivaylo Strandjev

Essayer

 const char * s = "hello";
 std::string str(s);

fera l'affaire.

11
Ed Heal

std::string a un constructeur qui convertit const char* implicitement. Dans la plupart des cas, vous ne devez rien faire. Passez juste un const char* où un std::string est accepté et cela fonctionnera.

2
Fred Larson

Il y a trois possibilités. Vous pouvez utiliser un constructeur, un opérateur d'affectation ou une fonction membre assign (si vous ne tenez pas compte de la fonction membre insert bien qu'elle soit également utilisable :)) `

Par exemple

#include <iostream>
#include <string>

const char * f() { return "Hello Fletch"; }

int main()
{
   std::string s1 = f();

   std::string s2;
   s2 = f();

   std::string s3;
   s3.assign( f() );

   std::cout << s1 << std::endl;
   std::cout << s2 << std::endl;
   std::cout << s3 << std::endl;
}
1
Vlad from Moscow

Vous avez beaucoup d'options:

const char* dosth() { return "hey"; }

string s1 = dosth();
string s2 (dosth());
string s3 {dosth()};
auto   s4 = (string)dosth();

Démo en direct , Documentation

Notez que s3 et s4 sont des fonctionnalités C++ 11, si vous devez toujours travailler avec un compilateur ancien ou non conforme, vous devrez travailler avec l'une des autres options.

1
Appleshell