Comment convertir un pointeur char * en une chaîne C ++?
J'ai un C++ string
. J'ai besoin de passer cette chaîne de caractères à une fonction acceptant un char*
paramètre (par exemple - strchr()
).
a) Comment puis-je obtenir le pointeur?
b) Est-il une fonction équivalente à strschr()
qui fonctionne pour C++ strings
?
source d'informationauteur Moeb
Vous devez vous connecter pour publier un commentaire.
C
équivalent de chaîne dele
C++
string
objet l'utilisationc_str
fonction.
char
dans unstring
l'utilisation des objetsfind_first_of
fonction.Exemple:
Remarque: j'ai donné le
strlen
juste un exemple de fonction qui prendchar*
.Étonnamment, std:;string a beaucoup, beaucoup plus de fonctionnalités que C-style chaînes. Vous souhaitez sans doute la find_first_of() méthode. En général, si vous vous trouvez à l'aide de la strxxx() des fonctions en C++ std::les chaînes de caractères, vous êtes presque certainement fait quelque chose de mal.
Comme la majeure partie de la Norme C++ de la Bibliothèque, la classe string est un complexe bête. Pour en profiter, vous avez vraiment besoin d'un bon ouvrage de référence. Je recommande Le C++ Standard Librarypar Nicolai Josuttis.
Vous ne pouvez pas obtenir un
char*
à partir d'unstring
string
ne vous permet pas de libre accès à la mémoire tampon interne.Le plus proche que vous pouvez obtenir est un
const char*
à l'aide de.c_str()
si vous voulez une valeur null ou.data()
si elle ne doit pas être null.Vous pouvez ensuite lancer le pointeur retourné par ces fonctions à
char*
mais vous le faites de votre propre risque. Cela dit c'est un moyen relativement sûr de lancer pour vous aussi longtemps que vous vous assurez que vous n'êtes pas changer la chaîne. Si vous l'avez modifiée alors que le pointeur dec_str()
peuvent ne plus être valides.Ce code:
est probablement ok
Cependant ceci:
est certainement pas plus ok.
Si vous voulez juste pour affecter une chaîne de caractères littérale de pw, vous pouvez le faire comme
Si vous avez un C++ std::string objetdont la valeur que vous souhaitez attribuer à pwvous pouvez le faire comme
char *pw = some_string.c_str()
Toutefois, la valeur que pw points ne seront valables que pour la durée de vie de chaîne_quelconque.
GoodLUCK!!
Si str dans votre chaîne d'utiliser
str.c_str()
méthode pour obtenir le char* à l'intérieur d'elle.Peut-être que cet exemple vous aidera à
Le Standard C++ fournit deux fonctions de membre de claass std::basic_string qui retournent un pointeur vers le premier élément de la chaîne. Ils sont
c_str()
etdata()
. Mais le les deux de retour const char *, Donc vous ne pouvez pas les utiliser avec une fonction de paramètre de type char *.Comme pour la fonction strchr puis son premier paramètre est
const char *
. Donc vous pouvez utiliser c_str() et() avec cette fonction. Cependant, il est beaucoup mieux d'utiliser la fonction de membre defind()
de classe sttd::basic_string au lieu destrchr.