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
15213
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
21 janvier 2022
101
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
15213
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
21 janvier 2022
101
@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
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
125
@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
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
125
@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 .