C'est un peu difficile, je ne peux pas comprendre.
J'ai une intensive et une chaîne que j'ai besoin de le stocker comme un char *, l'INT doit être en heex p>
IE P>
1F a number
5 Réponses :
avec approprié inclut: quelque chose comme ceci: p> copier le résultat de: p> Notez que le résultat de c_str code> est un code temporaire (!)
const char * code> donc si votre fonction prend
char * code> Vous devrez allouer une copie mutable quelque part. (Peut-être le copier à un
std :: vecteur
#include <stdio.h> char display_string[200]; sprintf(display_string,"%X\t%s",a,str.c_str()); I've used sprintf to format your number as a hexadecimal.
Les exigences devaient séparer par un onglet, pas un espace.
Je ne pense pas que cela justifie un bowtvote puisque la partie la plus difficile n'incluait pas un onglet: - /
1) Sprintf_s n'est pas standard - 2) C'est le moyen de le faire
Eh bien, l'OP veut utiliser un char * code>, donc
sprintf code> n'est pas donc i> injustifié!
Jacob a mis à jour la réponse à utiliser sprintf code>. Et depuis lors, utilisait des fonctions de bibliothèque C illégales dans le code C ++?
@ Kristo: Je suis d'accord, surtout que je trouve encore que je trouve le formatage en utilisant des iostreams pour être beaucoup plus douloureux de lire (ou même d'aller bien en premier lieu). Cependant, je pense qu'utiliser snaprintf () code> doit être pris en compte sur
sprintf () code>.
Oui, utiliser c fonctions en C ++ est souvent beaucoup plus facile. Peu importe que sa "bonne pratique" ou non ... Peu importe ce que cela signifie.
La prochaine fois, dites à chacun de ne pas utiliser "const" dans les paramètres Fonction, car "c'est plus facile" et "ce n'est pas illégal". Les gens comme vous êtes une vraie douleur à ce sujet. Chaque jour je lis de tels bêtises ici. Ne laissez-vous pas seul les experts, au lieu d'ajouter du bruit à ce site?
-1 pour le tampon de longueur 200. C'est de soit trop gros (si nous prenons le str code> donné dans la question), ou pas assez gros (si
str code> est inconnu longueur).
Je m'attendrais à ce que l'OP ajuste la longueur de la mémoire tampon à ses propres besoins. Ou le calculer de manière dynamique - ce qui est probablement trop exclu.
Essayez ceci:
int myInt = 31; const char* myString = "a number"; std::string stdString = "a number"; char myString[100]; // from const char* sprintf(myString, "%x\t%s", myInt, myString); // from std::string :) sprintf(myString, "%x\t%s", myInt, stdString.c_str());
Commencez par un std :: string code>, pas un
const char * code>.
Tout compilateur C ++ moderne qui permet de connecter au C-Runtime compilera ce code (le code de Jacob est centré sur Windows mais fonctionne toujours sur cette plate-forme). J'ai personnellement toujours détesté les << opérateurs surchargés dans les bibliothèques d'E / S C ++, mais je suppose que chacun le sienne.
Remarque: ne répondant pas à la question principale puisque votre commentaire a indiqué que ce n'était pas nécessaire. P> str.c_str () code> retournera une chaîne C Null terminée. P>
ceux qui écrivent "const char * mystring =" un nombre ";" sont juste des programmeurs moche. Être capable d'obtenir les bases C - ils se précipitent dans C ++ et commencent à parler de ce qu'ils ne comprennent tout simplement pas. P>
Le type "const char *" est un pointeur. "Un numéro" - est une matrice. Vous mélangez des pointeurs et des tableaux. Oui, les compilateurs C ++ permettent parfois de taper des conduits. Mais vous devez également comprendre - si vous tapez sur des conduits ne comprenant pas l'endroit où votre programme est - tout votre programme n'est qu'un ruban adhésif. p>
Remarque: je n'ai pas besoin de l'imprimer dans ce format. Je peux le faire. J'ai une fonction qui prend un char * comme paramètre. J'ai besoin de le convertir afin que je puisse l'utiliser pour cette fonction