Quelle est la meilleure façon de convertir une chaîne de style C en C++ std::string
? Dans le passé, je l'ai fait en utilisant stringstream
s. Y a-t-il un meilleur moyen?Conversion d'une chaîne de style C en C++ std :: string
Répondre
chaînes C++ ont un constructeur qui vous permet de convertir des chaînes de style C:
char* myStr = "This is a C string!";
std::string myCppString = myStr;
et maintenant je dois aussi supprimer 'myStr;' non? –
@BarnabasSzabolcs Non, ce n'est pas nécessaire. Vous avez seulement besoin de supprimer la mémoire allouée avec new. Les pointeurs vers les littéraux de chaîne n'ont pas besoin d'être désalloués. – templatetypedef
Je vois, donc je devine juste, chaîne fait une copie interne de ce char *. –
Vous pouvez initialiser un std::string
directement à partir d'un c-string:
std::string s = "i am a c string";
std::string t = std::string("i am one too");
Vérifiez les différents constructeurs de la classe de corde: documentation Vous pourriez être intéressé par:
//string(char* s)
std::string str(cstring);
Et:
//string(char* s, size_t n)
std::string str(cstring, len_str);
Si vous voulez dire char*
-std::string
, vous pouvez utiliser le constructeur.
char* a;
std::string s(a);
Ou si le string s
existe déjà, il suffit d'écrire ceci:
s=std::string(a);
Non. Votre exemple lancerait une erreur de logique dans le constructeur de std :: string. 'a' ne peut pas être NULL. –
En général (sans déclarer un nouveau stockage) vous pouvez simplement utiliser le constructeur 1-arg pour changer le c-string en chaîne rvalue:
string xyz = std::string("this is a test") +
std::string(" for the next 60 seconds ") +
std::string("of the emergency broadcast system.");
Cependant, cela ne fonctionne pas lors de la construction de la chaîne à passer par référence à une fonction (un problème que je viens de croiser), par exemple
void ProcessString(std::string& username);
ProcessString(std::string("this is a test")); // fails
Vous devez faire la référence une référence const:
void ProcessString(const std::string& username);
ProcessString(std::string("this is a test")); // works.
C++11
: surcharger un opérateur de chaîne littérale
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
: Utilisez l'opérateur de std::string_literals
espace de noms
using namespace std::string_literals;
auto s3 = "abc\0\0def"s; // is a std::string
- 1. Conversion de std :: string en chaîne Unicode en C++
- 2. C++ std :: string et string
- 3. C++ std :: string to boolean
- 4. Conversion std :: string ou string^en tableau byte en C++/cli
- 5. C++ problème std :: string en utilisant VC10
- 6. C++ std :: problème de conversion de chaîne sous Windows
- 7. std :: string s = (std :: string) "a" + "b" + "c"; D'accord?
- 8. conversion entier en chaîne C++
- 9. Conversion de boost std :: string :: const_iterator en chaîne et int C++
- 10. Conversion de managed System :: String en std :: string en C++/CLI
- 11. C++ std :: string Code InputIterator en C code
- 12. géré C++ std :: string non accessible en c non géré ++
- 13. C#: Conversion de Linq.Binary en type String
- 14. C++ constructeur, Label.Caption, std :: string à la conversion unicode
- 15. C++ Conversion de memcpy en std :: copy
- 16. Remplacement d'instances d'une chaîne std :: string donnée par une autre chaîne std :: en C++
- 17. Remplacer std :: string simple en C++
- 18. Cython C++ et std :: string
- 19. convertir une chaîne de style c en chaîne de style C++
- 20. C++ différence entre std :: string nom et std :: string & name
- 21. Conversion de chaîne std en chaîne nsstring
- 22. chaîne en notation scientifique C++ double conversion
- 23. Conversion de chaîne double en chaîne en C++
- 24. Conversion int [] à chaîne en C++
- 25. Conversion de mysqlpp :: String en C++ int
- 26. C++ .NET convertir System :: String en std :: string
- 27. C++ std :: string comparer avec les abréviations
- 28. C++: std :: problème de chaîne
- 29. Récupère les octets de std :: string en C++
- 30. Conversion chaîne en int (C++)
Qu'est-ce qu'une chaîne de caractères? Voulez-vous dire un «CString» de MFC? Ou un tableau null-terminé de char (une chaîne C)? Ou autre chose? –