Problème pour stoker une string dans un char*

Signaler
Messages postés
1
Date d'inscription
jeudi 5 janvier 2012
Statut
Membre
Dernière intervention
5 janvier 2012
-
Messages postés
13
Date d'inscription
samedi 18 avril 2009
Statut
Membre
Dernière intervention
12 janvier 2012
-
Salut,

Alors voici mon problème j'utilise une OpenFileDialog (Parcourir)pour permette a l'utilisateur de choisir un fichier. Je récupéré le patch du fichier dans:
               System::String^ Patch;

                Parcourire->ShowDialog();
Patch = Parcourire->FileName; 
textBox1->Text =Patch; 

Le chemin complet s’affiche bien dans mon textbox mais pour la suite du programme jais besoin d'utiliser le patch du fichier via un char * seulement impossible de convertir ce System::String en char* et le code suivant ne fonctionne pas car il n'ouvre jamais le bon fichier :( (jais l’impression que la variable Patchchar contient n’importe quoi.

//Conversion du System::string en char *  pour le fopen
pin_ptr<const wchar_t> wch = PtrToStringChars(Patch);
size_t convertedChars = 0;
size_t  sizeInBytes = ((Patch->Length + 1) * 2);
errno_t err = 0;
Patchchar = (char *)malloc(sizeInBytes);


Merci d'avance

7 réponses

Messages postés
14837
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
15 octobre 2020
92
Hello,
Regarde ce code peut-être.
Une question: as-tu vraiment besoin de coder en C++ managé? Pourquoi ne pas seulement utilisé du C# ou bien du C++ simplement?


@+
Buno, Admin CS
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
13
Date d'inscription
samedi 18 avril 2009
Statut
Membre
Dernière intervention
12 janvier 2012

salut si tu parle de string de la biblio STL de c++
alors c'est facile
parce que la class string a une fonction membre qui return la string en tant que const char*
//code:
#include
#include<string>
using namespace std;
main()
{
string mystring("sssssssssss");
cout<<mystring.c_str()<<endl;
}

//exemple de creaiton de dossier
//CreatDirectoryA(mystring.c_str(),0);
Messages postés
14837
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
15 octobre 2020
92
@mosaidrd: à mon avis, il ne parle pas des std::string mais bien des System::String


@+
Buno, Admin CS
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
3819
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
28 septembre 2020
113
@mosaidrd: En plus tu lui files une exemple plein de mauvaise pratique...

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Messages postés
13
Date d'inscription
samedi 18 avril 2009
Statut
Membre
Dernière intervention
12 janvier 2012

quelle mauvaise pratique ? je voulais just etre precis dans ma reponse :)
Messages postés
3819
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
28 septembre 2020
113
@mosaidrd:
1) Évite les "using namespace", voir: http://0217021.free.fr/portfolio/axel.berardino/articles/bon-usage-using-namespace
2) string est déjà inclus dans iostream
3) main() => int main()
4) Oublie du return 0

Quasiment 4 mauvaises pratiques en 4 lignes, chapeau !

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Messages postés
13
Date d'inscription
samedi 18 avril 2009
Statut
Membre
Dernière intervention
12 janvier 2012

c vrai
mauvaise habitude je croix :)
c trop de toujour tapper le std::
merci @CptPingu .