48 votes

Conversion d'une chaîne de style C en un std::string C++

Quelle est la meilleure façon de convertir une chaîne de style C en un C++ std::string ? Dans le passé, je l'ai fait en utilisant stringstream s. Existe-t-il un meilleur moyen ?

12voto

SanSS Points 2834

Vérifiez les différents constructeurs de la classe string : documentation Vous etes peut etre intéressé:

 //string(char* s)
std::string str(cstring);

Et:

 //string(char* s, size_t n)
std::string str(cstring, len_str);

6voto

Shreevardhan Points 19

C++11 : Surcharger un opérateur de littéral de chaîne

 std::string operator ""_s(const char * str, std::size_t len) {
    return std::string(str, len);
}

auto s1 = "abc\0\0def";     // C style string
auto s2 = "abc\0\0def"_s;   // C++ style std::string

C++14 : utilise l'opérateur de l'espace de noms std::string_literals

 using namespace std::string_literals;

auto s3 = "abc\0\0def"s;    // is a std::string

5voto

Manas Points 289

Si vous voulez dire char* à std::string , vous pouvez utiliser le constructeur.

 char* a;
std::string s(a);

Ou si les string s existent déjà, écrivez simplement ceci :

 s=std::string(a);

4voto

trojanfoe Points 61927

Vous pouvez initialiser un std::string directement à partir d'une chaîne de caractères :

 std::string s = "i am a c string";
std::string t = std::string("i am one too");

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X