String

Résolu
Signaler
Messages postés
50
Date d'inscription
mercredi 20 juillet 2005
Statut
Membre
Dernière intervention
22 mai 2006
-
Messages postés
50
Date d'inscription
mercredi 20 juillet 2005
Statut
Membre
Dernière intervention
22 mai 2006
-
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

Messages postés
15187
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
26 novembre 2021
100
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...
Messages postés
19
Date d'inscription
lundi 28 juin 2004
Statut
Membre
Dernière intervention
29 novembre 2005

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+
Messages postés
50
Date d'inscription
mercredi 20 juillet 2005
Statut
Membre
Dernière intervention
22 mai 2006

merci pour votre aide.......