String

Résolu
blueburry Messages postés 50 Date d'inscription mercredi 20 juillet 2005 Statut Membre Dernière intervention 22 mai 2006 - 28 juil. 2005 à 14:27
blueburry Messages postés 50 Date d'inscription mercredi 20 juillet 2005 Statut Membre Dernière intervention 22 mai 2006 - 28 juil. 2005 à 17:34
Bonjour,
je suis debutant en c++ et je dois creer une fonction lire() ki retourne un string.
En fait lire() contient la fonction GetPrivateProfileString ki recupere ce k'elle lit ds un fichier de configuration et le place ds un buffer.
mon buffer est de type char[50].
lire doit retourner ce ke contient le buffer.

je me demande prk lire() ne peut pas retourner un string ds ce ke g fait.
vs pouvez me corriger les erreurs ke je commets

acces.h


#include <stdio.h>
#include <windows.h>
#include <string.h>



class Acces
{
public:
Acces();
string lire(); //probleme

};

acces.cpp
#include "acces.h"



Acces :: Acces () {}


string Acces :: lire()
{
char temp [50];


GetPrivateProfileString(
"section",
"Clé",
"",
temp,
sizeof(temp),
"Test.ini" );

return &temp[0]; //probleme
}



main.cpp

#include "acces.h"


void main()
{
Acces *a = new Acces();
string s = a->lire();
printf (s); //probleme
}

merci pour votre aide

3 réponses

BunoCS Messages postés 15331 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 7 décembre 2022 103
28 juil. 2005 à 14:49
Pourquoi pas comme cela?



acces.h
#include <stdio.h>
#include <windows.h>
#include <string.h>




class Acces
{
public:


char Text[50];


Acces();
void lire(void);

};

acces.cpp
#include "acces.h"




Acces :: Acces () {}



Acces :: lire(void)
{





GetPrivateProfileString(
"section",
"Clé",
"",
Text,
sizeof(temp),
"Test.ini" );
}




main.cpp

#include "acces.h"


void main()

{

Acces a;

a.lire();

printf ("%s",a.Test);

}

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
3
oulali Messages postés 19 Date d'inscription lundi 28 juin 2004 Statut Membre Dernière intervention 29 novembre 2005
28 juil. 2005 à 14:55
Je crois que cela vient de "return &temp[0];". Je ne vois pas pourquoi tu as compliqué la vie. "return temp;" suffira. Il se peut qu'il y est un problème de priorité entre "&" et "operator []".

Essaye cela et dis-moi ce qui se passe.

A+
0
blueburry Messages postés 50 Date d'inscription mercredi 20 juillet 2005 Statut Membre Dernière intervention 22 mai 2006
28 juil. 2005 à 17:34
merci pour votre aide.......
0