Bonjour à tous,
J'essaye de faire le portage d'une application MFC/windows vers gcc.
Cette application est bardée de CString l'objet chaîne de caractère sous Windows.
J'ai pas vraiment envie de reprendre toute les utilisations de cet objet pour mettre des string à la place (un boulot fou). D'où ma question, connaîtriez voue une librairie qui wrappe les CString vers la stl ?
Merci d'avance
# fonction Format()
Posté par pnb666 . Évalué à 2.
pour le reste il suffit de faire un class CString qui appelle les equivalent de la stl.
Note perso j'ai fais un remplace all "CString" par "std::string" puis j'ai gérer les cas qui posaient probleme. Au final, a part la fontion format, il n' y a pas trop de soussis.
Ps: Si quelqun commait un equivalent de CString::Format(), qu'il la donne
Merci
[^] # Re: fonction Format()
Posté par dguihal . Évalué à 2.
[^] # Re: fonction Format()
Posté par fearan . Évalué à 2.
puis le mieux c'est de faire une fonction format, qui se charge de renvoyer un string créé à partir de la chaine créé par asprintf ( en pensant à libérer l'espace aloué )
Une autre solution consisterai à définir un espace suffisament grand et utiliser snprintf.
dans un cas on a une allocation dynamique ( avec les impacts sur les performances), de l'autre on à une allocation statiquen, plus portable, mais avec un risque de tronquer des chaines.
les deux solutions sont théoriquement protégées des débordement de buffer ( il me semble )
Il ne faut pas décorner les boeufs avant d'avoir semé le vent
[^] # Re: fonction Format()
Posté par pnb666 . Évalué à 1.
mais apparament asprintf a l'aire d'etre ca!
Merci
[^] # Re: fonction Format()
Posté par lmg HS (site web personnel) . Évalué à 1.
Pas oublier aussi toutes les fois où une CString était directement passée à un "const char*", avec les chaînes standard, il faudra faire des appels explicites à std::string::c_str().
Il devrait aussi y avoir des différences par rapport à l'aspect UNICODE & cie, si je me souviens bien.
Autrement, j'avais croisé sur codeguru/codeproject (?) des classes mimant le comportement (et le nom) de CString.
A termes, j'ai envie de dire que mieux vaut migrer vers la chaine standard.
[pinaillage]
PS: std::string ne fait pas parti de la STL historique. Juste de la SL du C++
[/]
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.