Y a t il une fonction equivalente à "atoi"
Transformer un numerique en chaine de caractere ?
Y a t il une fonction equivalente à "atoi"
Transformer un numerique en chaine de caractere ?
Salut,
Je ne crois pas qu'il y ait une telle fonction toute prête; tu peux te référer à cet article de la faq C++ pour voir leur méthode et l'adapter à tes besoins.
Salut,
Le plus facile, c'est, tout simplement l'utilisation de std::*stringstream et de std::string...(istringstream pour la convertion chaine-->n'importe quoi, ostringstream pour n'importe quoi-->chaine)
Une fois que tu as ta std::string, si, vraiment, tu as besoin d'un char*, tu pourras toujours l'avoir avec la fonction membre c_str() de la classe string...
Tu trouveras des exemples pour les convertion ==>sur cette page du site<==.
Nota:
- Il est vrai qu'on le répète à longueur de journée sur ce forum, mais, honnêtement, en C++, il est beaucoup plus simple d'utiliser la classe std::string pour la gestion de chaines de caractères que de commencer avec des chaines "C style" (tableau de caractères terminés par '\0')
- les classes string et *stringstream font toutes les deux partie de l'espace de nommage std... les fichiers à inclure pour en profiter sont respectivement <string> et <sstream>
A méditer: La solution la plus simple est toujours la moins compliquée
Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
Compiler Gcc sous windows avec MinGW
Coder efficacement en C++ : dans les bacs le 17 février 2014
mon tout nouveau blog
Ok merci koala01 et IrmatDen, vous m'avez envoyer vers le même type de tutorial, j ai suivi celui de Aurélien Regat-Barrel sur developpez.net.
En suivant les conseils de koala j'ai fais ma propre function de log qui prend entre une string que je convertie ensuite en char *
Mais ma question est: Pourquoi vouloir absolument le convertir en char*Envoyé par magnus2005
Pour une fonction log, utilise les std::ofstream pour l'écriture dans un fichier, et ca fonctionne tres bien avec des std::string et meme avec n'importe quel type de base (entier, reel, ...)
Un code du genre de
fonctionnera très bien (nécessite l'inclusion du fichier <fstream>)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 /* fonction log @in éventuellement le nom du fichier à utiliser les infos à écrire le prototype peut donc varier énormément, selon les infos à logguer ;) */ void log(std::string fichier,std::string& chaine, int entier) { //le seul char* qu'il nous faille, c'est pour le nom du fichier //(je n'ai personnellement jamais compris pourquoi, dans ce cas précis, // la stl n'avait pas envisagé l'utilisation d'une string :P) std::ofstream ofs(fichier.c_str(),std::ios_base::app); ofs<<"entier: "<<entier<<" chaine: "<<chaine<<std::endl; }
A méditer: La solution la plus simple est toujours la moins compliquée
Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
Compiler Gcc sous windows avec MinGW
Coder efficacement en C++ : dans les bacs le 17 février 2014
mon tout nouveau blog
En fait je dois utiliser une fonction qui prend LPSTR en parametre
et quand je veux passer une "string" le compilateur
me dit "impossible de convertir". Si j ai bien lu les header de LPSTR est un type de char*.
Mais j'en conviens que c 'est pas génial.
Je suis en train de passez un projet VC++6 qui date de 1997 et j'essaie d updater morceau par morceau.
La je l ai passe sous VISUAL 2005 et j avance pas à pas.
J'ai 2 soucis principaux :
- le code qui assez souvent obsolete (Ex : je suis en train de passer les winsock.h vers winsock2.h)
- Et je connais pas la logique de conception du projet.
Une petite suggestion en passant...
Si le projet est volumineux et que tu n'a pas moyen de retrouver des informations sur la logique (pas ou peu de commentaires, impossiblité de contacter l'auteur...), il pourrait sembler intéressant de passer par une étape de "reverse ingeneering"... ce qui est malgré tout beaucoup plus simple quand on a le code source
L'idée de cette suggestion est qu'il est difficile de savoir oùù l'on va si on ne sait déjà pas d'où on part![]()
A méditer: La solution la plus simple est toujours la moins compliquée
Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
Compiler Gcc sous windows avec MinGW
Coder efficacement en C++ : dans les bacs le 17 février 2014
mon tout nouveau blog
Je suis ouvert à toutes suggestions pour me depetrer de ce ****.
C est une bonne idée mais j ai pas vu l option UML dans ma version de visual studio
Le projet n'est même pas estampillé est version final la derniere en une Release candidate. Alors j essaie dans 1 premier temps de faire fonctionner est remplaçant ce qui est desuet et en meme j essaie de m impregner de leur logique. avec une difficulte supplementaire la derniere fois que j ai fais du C++ c etait sous HP UNIX en 2000-2001. et qu habituellement je fais plutot du Java du javascript du PHP voir du .NET .
(36 15 ma vie )
il y a quelques commentaires sur de point tres precis mais rien sur les interactions entre les classes et il y a beaucoup de variable "global" et VISUAL studio ne trouve pas forcement les references (et moi je sais pas sur quoi elles agissent), et quand il trouve il me demande de lever l ambiguïté avec 2 ou 3 choix possible (une fois il m a donné 10).
Ben, le meilleur moyen, selon moi, c'est encore la bonne vieille méthode du bloc de papier (sisi, ca existe encore) et du crayon...
Il y a surement un ou deux trucs que j'ai oublié, mais ca te permettra déjà de voir un peu plus précisément les différentes implications, et vraissemblablement de repérer les éventuels conflits/ambiguités
- Commence peut etre par trouver les appels des différentes fonctions (ex: dans A, on appelle B, C et D, dans B, on appelle E, F et G, dans C on appelle B, D et A...)
- Continue en faisant l'inverse: trouver toutes les fonctions qui en appellent une précise (B est appelée par A, par C, et par Z)
- Profites en pour repérer les appels spécifiques au fichier winsoks.h (et surtout dans quelle fonction elles sont appelée)
- Fais pareil pour les différents define, enumérations, et autres constantes (essaie de repérer dans quel fichier ils sont définis)
...
Un fois que tu aura repéré les grosses lignes, tu pourras passer à l'étude de la logique suivie dans les différentes fonctions, et peut etre meme voir des erreurs d'algorithme
Le principe reste le meme: pour chaque fonction
- premiere ligne, on fait ca
- deuxième ligne, on ...
- troisième ligne, on...
- puis on teste (...)
- on entre dans la boucle qui a pour but (...)
- ...
Si le code est bien commenté, n'hésite pas à te baser sur les commentaires pour en améliorer ta compréhension
Evidemment, ca peut (doit) aussi etre fait au niveau des classes (héritage, membres ...)
Il faut bien etre conscient qu'il y a relativement peu de chances que tu puisse en arriver à une étude UML complete... et que ca risque de prendre, mettons, un temps certains
Mais tout ce qui aura été fait sur papier sera de nature à te rendre la vie plus simple quand tu retourneras à ton clavier![]()
A méditer: La solution la plus simple est toujours la moins compliquée
Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
Compiler Gcc sous windows avec MinGW
Coder efficacement en C++ : dans les bacs le 17 février 2014
mon tout nouveau blog
Je suis honteux de ne pas y avoir pensé plus tot, parce que je l'utilise régulièrement...
Un petit utilitaire qui pourrait te faciliter énormément la tache pour retrouver un peu tes jeunes, c'est doxygen...
Il permet de créer la documentation de projet, dont, entre autres, certains graphiques de dépendances/héritage/dérivation/appel...
Si tu le couple avec graphviz, ca devient franchement sympa![]()
A méditer: La solution la plus simple est toujours la moins compliquée
Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
Compiler Gcc sous windows avec MinGW
Coder efficacement en C++ : dans les bacs le 17 février 2014
mon tout nouveau blog
Merci pour l'info.
Cela semble bien orienté sur que j ai bien besoin.
Je l ai installé j ai lu la doc
il me fait fait bien quelque warning sur le code C++.
Pour le moment il me fait seulement une sortie XML de 18 Mo
le HTML et le RTF sont bien crée mais il a juste le modele vide dedans il y a pas de reference au code.
Je continue de chercher.
Merci pour tes conseils.
bonjour
je ne connais pas encore les classe string et je souffre vraiment
enfin j'ai utiliser un tableau de char [100]
bon voila mon probleme c'est que quand j'affiche le contenu de la chaine ça donne une valeur ironé
svp donner moi un liens ou je trouve les classe string détaillé et facile pour que je puisse faire mon job
//declaration des structures et des types utilises dans notre programme
#define max 100
typedef int bool ;
struct arc
{ char alph[max] ;int x;int y; arc*next;};
void affch_arc(arc*pa); //Afficher le contenu de la list des arecs
arc* ajout_arc(arc* &rt_arc,char alfb[max],int x1,int x2); //ajouter un arc
//le programme principal
void main()
{
arc* t_arc,*arcc;
int choix,choix1,de_x,vers_y;
char alphabet[max];
swich(choix)
{
case 2:
cout<<"donner l'alphabet de transision "; cin>> alphabet[max];
cout<<endl<<" donner le sommet 1"; cin>>de_x;
cout<<endl<<" donner le sommet 2"; cin>>vers_y;
arcc=ajout_arc(t_arc,alphabet[max],de_x,vers_y); goto bcl;
affch_arc(arcc);
}
t_arc et arcc ne sont pas allouésEnvoyé par clubinfo
Google: "C++ string"?Envoyé par clubinfo
Au passage:
> les balises code sont utiles
> ton code ressemble presqu'au résultat d'un concours d'obfuscation: les sauts à la ligne et l'indentation ne mange pas de pain...
Edit: au fait: rapport avec le post original?
bjr
j'ai sauter des lignes , ces lignes presentait l'allocation de t_arc
j'ai changé l'idée puisque je n'ai pas trouver l'erreur j'ai utiliser une une liste dynamique qui contient un char ça va m'aider plus pour sa gestion
dans le programme précedant il donne un resultat erroné dans la boucle switch mais si j'utilise ailleur l'affichage ça ne poser aucun problem bizarrrrrrr![]()
merci
Partager