Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1507 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  string->const char* pas ok en mode debug

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

string->const char* pas ok en mode debug

n°1156278
December
Posté le 21-07-2005 à 16:30:20  profilanswer
 

Bonjour,
je suis sous vc6 et j'ai le problème suivant:
en mode release une chaine de caractere s'affiche correctement, mais pas en mode debug!!!
 
code:

[#8dff00]
 
main.cpp
 
#include "Test.h"
 
#include <string>
using std::string;
 
Test::Test()
{
}
 
Test::~Test()
{
}
 
const char* Test::display()
{
 std::string request="bonjour tout le monde!!!";
 return request.c_str();
}
 

Test.cpp

 
#include "Test.h"
 
#include <string>
using std::string;
 
Test::Test()
{
}
 
Test::~Test()
{
}
 
const char* Test::display()
{
 std::string request="bonjour tout le monde!!!";
 return request.c_str();
}
 
[[]i]Test.h[/i]
 
#include <iostream>
 
 
class Test{
 
public:
 
 Test();
 ~Test();
 const char* display();
 
};

[/#000ef0][/]
 
Resultat en release:
 
bonjour tout le monde!!!
Press any key to continue
 
Resultat en Debug:
¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
Press any key to continue

 
 
Excusez ma nullité, mais quelqu'un pourrais t'il m'expliquer pourquoi et comment faire marcher en Debug?

mood
Publicité
Posté le 21-07-2005 à 16:30:20  profilanswer
 

n°1156281
December
Posté le 21-07-2005 à 16:32:15  profilanswer
 

Je recommence !

n°1156288
December
Posté le 21-07-2005 à 16:38:33  profilanswer
 

Bonjour,
je suis sous vc6 et j'ai le problème suivant:
en mode release une chaine de caractere s'affiche correctement, mais pas en mode debug!!!
 
[]code:
 
Test.h
#include <iostream>
 
 
class Test{
 
public:
 
 Test();
 ~Test();
 const char* display();
 
};

 
 
 
Test.cpp
 
#include "Test.h"
 
#include <string>
using std::string;
 
Test::Test()
{
}
 
Test::~Test()
{
}
 
const char* Test::display()
{
 std::string request="bonjour tout le monde!!!";
 return request.c_str();
}
 
 
main.cpp
#include "Test.h"
 
int main()
{
 Test* test = new Test();
 const char* disp = test->display();
 std::cout<<disp<<std::endl;
 
 delete test;
 return 0;
}[/]

 
 
Maintenant les résultats:
 
Mode release:
bonjour tout le monde!!!
Press any key to continue

 
Mode Debug:
¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
Press any key to continue

 
 
 
Quelqu'un peut t'il m'expliquer pourquoi la chaine est correcte en release et pas en debug?  :heink:  
Et me dire comment faire marcher dans les 2 modes ?

n°1156325
theshockwa​ve
I work at a firm named Koslow
Posté le 21-07-2005 à 16:57:21  profilanswer
 

utilise les balises [cpp]

n°1156341
December
Posté le 21-07-2005 à 17:06:52  profilanswer
 


Un truc + présentable (jspr ke c la bonne!!) :
 
Bonjour,
je suis sous vc6 et j'ai le problème suivant:
en mode release une chaine de caractere s'affiche correctement, mais pas en mode debug!!!
 
[#0046b8]code:
 

Code :
  1. Test.h
  2. #include <iostream>
  3. class Test{
  4. public:
  5. Test();
  6. ~Test();
  7. const char* display();
  8. };


 
 
Test.cpp

Code :
  1. #include "Test.h"
  2. #include <string>
  3. using std::string;
  4. Test::Test()
  5. {
  6. }
  7. Test::~Test()
  8. {
  9. }
  10. const char* Test::display()
  11. {
  12. std::string request="bonjour tout le monde!!!";
  13. return request.c_str();
  14. }


 
main.cpp
 

Code :
  1. #include "Test.h"
  2. int main()
  3. {
  4. Test* test = new Test();
  5. const char* disp = test->display();
  6. std::cout<<disp<<std::endl;
  7. delete test;
  8. return 0;
  9. }


 
Maintenant les résultats:
 
Mode release:
 
bonjour tout le monde!!!
Press any key to continue
 
Mode Debug:
 
¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
Press any key to continue
 
 
 
Quelqu'un peut t'il m'expliquer pourquoi la chaine est correcte en release et pas en debug?  :heink:  
Et me dire comment faire marcher dans les 2 modes ?

n°1156344
Taz
bisounours-codeur
Posté le 21-07-2005 à 17:08:10  profilanswer
 

RTFM
 
elle te dit quoi la doc de c_str() ?
 

Code :
  1. char*
  2. Utils::string_dup(const std::string &s)
  3. {
  4.   char *cstr;
  5.   cstr = new char[s.size() + 1];
  6.   s.copy(cstr, std::string::npos);
  7.   cstr[s.size()] = '\0';
  8.   return cstr;
  9. }

n°1156352
theshockwa​ve
I work at a firm named Koslow
Posté le 21-07-2005 à 17:14:39  profilanswer
 

tu peux aussi éditer tes messages avec les petites images situées au-dessus, au lieu de les recopier à chaque fois [:petrus75]

n°1156354
December
Posté le 21-07-2005 à 17:15:28  profilanswer
 

Désolé Taz, je pige pas ta langue... :(  
 

Taz a écrit :

RTFM
 
elle te dit quoi la doc de c_str() ?
 

Code :
  1. char*
  2. Utils::string_dup(const std::string &s)
  3. {
  4.   char *cstr;
  5.   cstr = new char[s.size() + 1];
  6.   s.copy(cstr, std::string::npos);
  7.   cstr[s.size()] = '\0';
  8.   return cstr;
  9. }



n°1156356
December
Posté le 21-07-2005 à 17:19:40  profilanswer
 

Ok merci, je m'en souviendrais [:aurelie22]
 

theshockwave a écrit :

tu peux aussi éditer tes messages avec les petites images situées au-dessus, au lieu de les recopier à chaque fois [:petrus75]


n°1156357
theshockwa​ve
I work at a firm named Koslow
Posté le 21-07-2005 à 17:20:01  profilanswer
 

Citation :

elle te dit quoi la doc de c_str() ?


 
:o

mood
Publicité
Posté le 21-07-2005 à 17:20:01  profilanswer
 

n°1156363
December
Posté le 21-07-2005 à 17:27:49  profilanswer
 

theshockwave a écrit :

Citation :

elle te dit quoi la doc de c_str() ?


 
:o


 
 :sweat: pige toujours pas
 
Je fais pas partie de votre monde, moi!  :fou:  
Je serais pas venu sur ce forum poser cette question si j'etais pas nul à ch**
 
j'ai besoin qu'on me parle français  :cry:  

n°1156365
bjone
Insert booze to continue
Posté le 21-07-2005 à 17:28:35  profilanswer
 

December a écrit :

Désolé Taz, je pige pas ta langue... :(


 
plus simplement poses-toi la question: "quelle est la durée de vie de ma string ?"

n°1156369
theshockwa​ve
I work at a firm named Koslow
Posté le 21-07-2005 à 17:32:33  profilanswer
 

on te dit de lire la documentation ... c'est pas trop compliqué, non plus ...

n°1156371
bjone
Insert booze to continue
Posté le 21-07-2005 à 17:33:44  profilanswer
 

même sans la doc, il y a un feeling général à avoir sur ce genre de choses....


Message édité par bjone le 21-07-2005 à 17:34:02
n°1156373
Elmoricq
Modérateur
Posté le 21-07-2005 à 17:36:05  profilanswer
 

December a écrit :

j'ai besoin qu'on me parle français  :cry:


 
 
Euh, Taz t'a filé la méthode à utiliser toute cuite, y a plus qu'à recopier.  :heink:  
 
Si tu ne comprends pas ce qu'il t'a donné, et si tu ne comprends pas le concept de durée de vie, alors tu devrais arrêter ce que tu es en train de faire, lire un bon livre de C++ avec exercices simples, et revenir sur ce problème plus tard.
 
Parce que là, maintenant, tout ce que tu réussiras à faire, c'est de la tambouille qui ne fonctionnera pas.

n°1156374
bjone
Insert booze to continue
Posté le 21-07-2005 à 17:37:30  profilanswer
 

on s'calme, il doit être en train de réfléchir sur la question  :wahoo:

n°1156375
Elmoricq
Modérateur
Posté le 21-07-2005 à 17:39:01  profilanswer
 

bjone a écrit :

on s'calme, il doit être en train de réfléchir sur la question  :wahoo:


 
Je ne dis pas ça sur le ton du reproche, bien au contraire.
Je pense vraiment qu'il vaut mieux remettre le problème à plus tard le temps de mieux connaître les mécanismes de base du C++.
 
C'est tout. :)

n°1156376
bjone
Insert booze to continue
Posté le 21-07-2005 à 17:42:07  profilanswer
 

oué enfin tu peux obtenir le même genre de blague rien qu'en C...
 
petit exo December, c'est quoi le problème avec:
 

Code :
  1. int *test()
  2. {
  3.     int a=8;
  4.     return &a;
  5. }
  6. meiinne()
  7. {
  8.     int d, *v;
  9.     v=test();
  10.     d=*v;
  11. }


Message édité par bjone le 21-07-2005 à 17:42:44
n°1156390
December
Posté le 21-07-2005 à 17:56:32  profilanswer
 

Merci les gars d'avoir bien voulu éclairer ma minuscule (voire quasi inexistante lanterne)!!
 
Bon je vais surement vous faire (encore!) rigoler mais j'ai pas besoin de faire delete[] ?

Code :
  1. int main()
  2. {
  3. Test* test = new Test();
  4. const char* disp = test->display();
  5. std::cout<<disp<<std::endl;
  6. delete test;
  7. return 0;
  8. }


Code :
  1. const char* Test::display()
  2. {
  3. std::string s="bonjour tout le monde!!!";
  4.    char *cstr;
  5.    cstr = new char[s.size() + 1];
  6.    s.copy(cstr, std::string::npos);
  7.    cstr[s.size()] = '\0';
  8.    return cstr;
  9. }

n°1156394
theshockwa​ve
I work at a firm named Koslow
Posté le 21-07-2005 à 17:58:17  profilanswer
 

si
 
Edit : C'est pour ca que cette méthode est à éviter en règle générale. Je suppose que l'exemple suggéré était là surtout pour mettre le problème en relief et te faciliter sa compréhension et sa résolution


Message édité par theshockwave le 21-07-2005 à 17:59:24
n°1156451
December
Posté le 21-07-2005 à 19:13:36  profilanswer
 

theshockwave a écrit :

si
 
Edit : C'est pour ca que cette méthode est à éviter en règle générale. Je suppose que l'exemple suggéré était là surtout pour mettre le problème en relief et te faciliter sa compréhension et sa résolution


 
Et comment je fais delete[] dans mon exemple ci-dessus alors? [:aurelie22]

n°1156483
bjone
Insert booze to continue
Posté le 21-07-2005 à 19:57:28  profilanswer
 

la question n'est pas "comment" mais "quand".

n°1156485
December
Posté le 21-07-2005 à 19:59:41  profilanswer
 

bjone a écrit :

la question n'est pas "comment" mais "quand".


oui quand?

n°1156511
theshockwa​ve
I work at a firm named Koslow
Posté le 21-07-2005 à 20:48:00  profilanswer
 

quand tu n'en as plus besoin ?

n°1156711
Taz
bisounours-codeur
Posté le 22-07-2005 à 00:28:10  profilanswer
 

même quand j'y mets de la bonne volonté, je suis pas récompensé ... pitoyable.
 
 
Bon dernier conseil :
- n'utilise pas c_str(), n'utilise pas les char*
- apprend le C++

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  string->const char* pas ok en mode debug

 

Sujets relatifs
splitpath avec des std::stringString qui contient un ' ou un \
[XML]Parser un String contenant du XMLRecherche d'une phrase dans un string
Forcer la MASTER en Mode SINGLE USERRemplacer une string dans un fichier
Supprimer des lignes dans une String[Java] Probleme avec "\n" lors d'un String.split(";")
Créer une interface utilisateur en mode texte...Query string qui ne va plus
Plus de sujets relatifs à : string->const char* pas ok en mode debug


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR