string->const char* pas ok en mode debug - C++ - Programmation
Marsh Posté le 21-07-2005 à 16:38:33
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?
Et me dire comment faire marcher dans les 2 modes ?
Marsh Posté le 21-07-2005 à 17:06:52
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 :
|
Test.cpp
Code :
|
main.cpp
Code :
|
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?
Et me dire comment faire marcher dans les 2 modes ?
Marsh Posté le 21-07-2005 à 17:08:10
RTFM
elle te dit quoi la doc de c_str() ?
Code :
|
Marsh Posté le 21-07-2005 à 17:14:39
tu peux aussi éditer tes messages avec les petites images situées au-dessus, au lieu de les recopier à chaque fois
Marsh Posté le 21-07-2005 à 17:15:28
Désolé Taz, je pige pas ta langue...
Taz a écrit : RTFM
|
Marsh Posté le 21-07-2005 à 17:19:40
Ok merci, je m'en souviendrais
theshockwave a écrit : tu peux aussi éditer tes messages avec les petites images situées au-dessus, au lieu de les recopier à chaque fois |
Marsh Posté le 21-07-2005 à 17:27:49
theshockwave a écrit :
|
pige toujours pas
Je fais pas partie de votre monde, moi!
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
Marsh Posté le 21-07-2005 à 17:28:35
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 ?"
Marsh Posté le 21-07-2005 à 17:32:33
on te dit de lire la documentation ... c'est pas trop compliqué, non plus ...
Marsh Posté le 21-07-2005 à 17:33:44
même sans la doc, il y a un feeling général à avoir sur ce genre de choses....
Marsh Posté le 21-07-2005 à 17:36:05
December a écrit : j'ai besoin qu'on me parle français |
Euh, Taz t'a filé la méthode à utiliser toute cuite, y a plus qu'à recopier.
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.
Marsh Posté le 21-07-2005 à 17:37:30
on s'calme, il doit être en train de réfléchir sur la question
Marsh Posté le 21-07-2005 à 17:39:01
bjone a écrit : on s'calme, il doit être en train de réfléchir sur la question |
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.
Marsh Posté le 21-07-2005 à 17:42:07
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 :
|
Marsh Posté le 21-07-2005 à 17:56:32
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 :
|
Code :
|
Marsh Posté le 21-07-2005 à 17:58:17
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
Marsh Posté le 21-07-2005 à 19:13:36
theshockwave a écrit : si |
Et comment je fais delete[] dans mon exemple ci-dessus alors?
Marsh Posté le 21-07-2005 à 19:59:41
ReplyMarsh Posté le 22-07-2005 à 00:28:10
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++
Marsh Posté le 21-07-2005 à 16:30:20
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?