Visual c++ strings

Résolu
zouippy Messages postés 14 Date d'inscription lundi 20 novembre 2000 Statut Membre Dernière intervention 29 juillet 2005 - 29 juil. 2005 à 10:37
zouippy Messages postés 14 Date d'inscription lundi 20 novembre 2000 Statut Membre Dernière intervention 29 juillet 2005 - 29 juil. 2005 à 23:40
Bon je vous explique mon problème rapidement:

J'ai fais un petit programme en MFC sous visual c++. Je récupère les donnée d'un fichier via une classe que j'ai défini. Parmis ces donnée se trouve un string. J'aimerais afficher le contenu de ce string dans un contrôle en changeant la valeur du Cstring associé à ce controle (m_str_name) puis en appelant UpdateData(FALSE);
Malheureusement le compilo me répond:

D:\C++\Project\Gta_save\Gta_save\Gta_saveDlg.cpp(1314) : error C2679: binary '=' : no operator defined which takes a right-hand operand of type 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' (or there is no
acceptable conversion)

Voici le bout de code en question:

//Read informations:

Save my_save_file("C:\\....monfichier.txt");


my_save_file.GetName();
my_save_file.GetMoney();

m_str_name = my_save_file.current_name;
m_long_money = my_save_file.current_money;

UpdateData(FALSE);

Au passage j'ai aussi un autre problème sur ce même projet:

Pour l'instant le fichier qui est ouvert avec cette classe est toujours le même. J'ai fais un CFileDialog(...); qui fonctionne très bien. J'aimerais bien stocker la valeure retournée par GetPathName() dans une variable en vu d'une ouverture avec fopen(); mais je ne sais trop quelle type de variable choisir.

Merci de votre aide :)

8 réponses

BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
29 juil. 2005 à 11:23
Ok, pardon, j'avais mal lu...

Du coup, ceci devrait marcher:



m_str_name.Format("%s",my_save_file.current_name.c_str());

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
3
zouippy Messages postés 14 Date d'inscription lundi 20 novembre 2000 Statut Membre Dernière intervention 29 juillet 2005
29 juil. 2005 à 23:40
J'ai trouvé la réponse à mon problème grâve à la doc en ligne MSDN. Il suffisait enfait de placer le filepath dans un CString :)
3
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
29 juil. 2005 à 10:56
pour le premier probléme: le code n'est pas suffisant... mais tu as
avoir m_str_name et my_save_file.current_name de types différents.



pour le second: pourquoi pas un char *?

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
zouippy Messages postés 14 Date d'inscription lundi 20 novembre 2000 Statut Membre Dernière intervention 29 juillet 2005
29 juil. 2005 à 11:08
ET bien oui, commme je l'ai dis plus haut, m_str_name est un Cstring propre à MFC tandis que my_save_file.current_name est un string.

J'ai essayé avec un char* de cette manière:

if(m_ldFile.DoModal() == IDOK) {

//Get path:
char* m_char_path = m_ldFile.GetPathName();

//...
}

Mais le compilo me répond: cannot convert from 'class CString' to 'char *'
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
29 juil. 2005 à 11:16
Essaye comme ca:



const char* m_char_path = m_ldFile.GetPathName().GetString();


Kaid - kaid.fr.st
0
zouippy Messages postés 14 Date d'inscription lundi 20 novembre 2000 Statut Membre Dernière intervention 29 juillet 2005
29 juil. 2005 à 11:47
Ta soluce marche buno. Mais pour le deuxième problème, quand je fais
const char* m_char_path = m_ldFile.GetPathName().GetString(); le compilo me répond:

error C2039: 'GetString' : is not a member of 'CString'
c:\program files\microsoft visual studio\vc98\mfc\include\afx.h(368) : see declaration of 'CString'
0
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
29 juil. 2005 à 14:59
Désolé zouippy, ca fait quelques années que j'ai arrêté les MFC. Tu peux peut-être remplacer GetString() par GetBuffer().

Kaid - kaid.fr.st
0
zouippy Messages postés 14 Date d'inscription lundi 20 novembre 2000 Statut Membre Dernière intervention 29 juillet 2005
29 juil. 2005 à 15:26
Non toujours pas... Erreur windows de base... :( Merci quand même :)
0
Rejoignez-nous