Le Fri, 31 Oct 2003 13:51:21 +0100, Gilles a écrit :
bonjour,
en java on execute
string chaine1 = "valeur :"+valeur;
mais en C++ (appli window) ?
valeur c'est quoi comme type ? pas de toString comme en Java, il faut que le type de ton object est un operateur de conversion (le plus souvent l'opérateur pour ~ecrire sur un std::ostream (un flux)
un petit tour ici http://www.cmla.ens-cachan.fr/Utilisateurs/dosreis/C++/FAQ/#flux_entree_sortie pour comprendre comment écrire sur un flux
Le Fri, 31 Oct 2003 13:51:21 +0100, Gilles a écrit :
bonjour,
en java on execute
string chaine1 = "valeur :"+valeur;
mais en C++ (appli window) ?
valeur c'est quoi comme type ? pas de toString comme en Java, il faut que
le type de ton object est un operateur de conversion (le plus souvent
l'opérateur pour ~ecrire sur un std::ostream (un flux)
un petit tour ici
http://www.cmla.ens-cachan.fr/Utilisateurs/dosreis/C++/FAQ/#flux_entree_sortie
pour comprendre comment écrire sur un flux
Le Fri, 31 Oct 2003 13:51:21 +0100, Gilles a écrit :
bonjour,
en java on execute
string chaine1 = "valeur :"+valeur;
mais en C++ (appli window) ?
valeur c'est quoi comme type ? pas de toString comme en Java, il faut que le type de ton object est un operateur de conversion (le plus souvent l'opérateur pour ~ecrire sur un std::ostream (un flux)
un petit tour ici http://www.cmla.ens-cachan.fr/Utilisateurs/dosreis/C++/FAQ/#flux_entree_sortie pour comprendre comment écrire sur un flux
----- Original Message ----- From: "Benoit Dejean" Newsgroups: fr.comp.lang.c++ Sent: Friday, October 31, 2003 1:45 PM Subject: Re: chaine de caractere
bonjour,
en java on execute
string chaine1 = "valeur :"+valeur;
mais en C++ (appli window) ?
valeur c'est quoi comme type ? pas de toString comme en Java, il faut que le type de ton object est un operateur de conversion (le plus souvent l'opérateur pour ~ecrire sur un std::ostream (un flux)
valeur c'est quoi comme type ? pas de toString comme en Java, il faut que le type de ton object est un operateur de conversion (le plus souvent l'opérateur pour ~ecrire sur un std::ostream (un flux)
----- Original Message -----
From: "Benoit Dejean" <bnet@ifrance.com>
Newsgroups: fr.comp.lang.c++
Sent: Friday, October 31, 2003 1:45 PM
Subject: Re: chaine de caractere
bonjour,
en java on execute
string chaine1 = "valeur :"+valeur;
mais en C++ (appli window) ?
valeur c'est quoi comme type ? pas de toString comme en Java, il faut que
le type de ton object est un operateur de conversion (le plus souvent
l'opérateur pour ~ecrire sur un std::ostream (un flux)
"Benoit Dejean" <bnet@ifrance.com> a écrit dans le message de
news:pan.2003.10.31.12.45.33.183434@ifrance.com...
bonjour,
en java on execute
string chaine1 = "valeur :"+valeur;
mais en C++ (appli window) ?
valeur c'est quoi comme type ? pas de toString comme en Java, il faut que
le type de ton object est un operateur de conversion (le plus souvent
l'opérateur pour ~ecrire sur un std::ostream (un flux)
----- Original Message ----- From: "Benoit Dejean" Newsgroups: fr.comp.lang.c++ Sent: Friday, October 31, 2003 1:45 PM Subject: Re: chaine de caractere
bonjour,
en java on execute
string chaine1 = "valeur :"+valeur;
mais en C++ (appli window) ?
valeur c'est quoi comme type ? pas de toString comme en Java, il faut que le type de ton object est un operateur de conversion (le plus souvent l'opérateur pour ~ecrire sur un std::ostream (un flux)
valeur c'est quoi comme type ? pas de toString comme en Java, il faut que le type de ton object est un operateur de conversion (le plus souvent l'opérateur pour ~ecrire sur un std::ostream (un flux)
Déjà, lis ça : http://www.giromini.org/usenet-fr/repondre.html
Ensuite, ton cas est traité dans la FAQ que t'as posté Benoît : http://www.cmla.ens-cachan.fr/Utilisateurs/dosreis/C++FAQ
SetWindowText est une fonction Windows (et non standard) qui prend comme paramètre une chaîne de caractères de type C. Il faudra donc que tu tapes dans le membre "c_str()", mais encore une fois, tout est dit dans la FAQ.
Je te mets tout de même un petit exemple pour ce que tu veux faire :
#include <string> #include <sstream> //...
char* szFileName = ...; // je suppose que tu dois utiliser // char*, sinon prends std::string std::ostringstream oss; oss << "Fichier : " << szFileName; SetWindowText (edithwnd, oss.str().c_str());
voilà. Mais tu comprendras mieux une fois que tu auras lu la FAQ :) -- <=- Michaël "Cortex" Monerau -=>
Déjà, lis ça :
http://www.giromini.org/usenet-fr/repondre.html
Ensuite, ton cas est traité dans la FAQ que t'as posté Benoît :
http://www.cmla.ens-cachan.fr/Utilisateurs/dosreis/C++FAQ
SetWindowText est une fonction Windows (et non standard) qui prend comme
paramètre une chaîne de caractères de type C. Il faudra donc que tu tapes
dans le membre "c_str()", mais encore une fois, tout est dit dans la FAQ.
Je te mets tout de même un petit exemple pour ce que tu veux faire :
#include <string>
#include <sstream>
//...
char* szFileName = ...; // je suppose que tu dois utiliser
// char*, sinon prends std::string
std::ostringstream oss;
oss << "Fichier : " << szFileName;
SetWindowText (edithwnd, oss.str().c_str());
voilà. Mais tu comprendras mieux une fois que tu auras lu la FAQ :)
--
<=- Michaël "Cortex" Monerau -=>
Déjà, lis ça : http://www.giromini.org/usenet-fr/repondre.html
Ensuite, ton cas est traité dans la FAQ que t'as posté Benoît : http://www.cmla.ens-cachan.fr/Utilisateurs/dosreis/C++FAQ
SetWindowText est une fonction Windows (et non standard) qui prend comme paramètre une chaîne de caractères de type C. Il faudra donc que tu tapes dans le membre "c_str()", mais encore une fois, tout est dit dans la FAQ.
Je te mets tout de même un petit exemple pour ce que tu veux faire :
#include <string> #include <sstream> //...
char* szFileName = ...; // je suppose que tu dois utiliser // char*, sinon prends std::string std::ostringstream oss; oss << "Fichier : " << szFileName; SetWindowText (edithwnd, oss.str().c_str());
voilà. Mais tu comprendras mieux une fois que tu auras lu la FAQ :) -- <=- Michaël "Cortex" Monerau -=>
Fabien LE LEZ
On Fri, 31 Oct 2003 13:51:21 +0100, "Gilles" wrote:
string chaine1 = "valeur :"+valeur;
mais en C++
Idem, sauf qu'on écrit généralement std::string. Si valeur n'est pas un std::string, on écrira généralement quelque chose comme std::string chaine1= "valeur : " + std::string (valeur); ou std::string chaine1= std::string ("valeur : ") + valeur;
-- ;-)
On Fri, 31 Oct 2003 13:51:21 +0100, "Gilles" <g.godard@znzgroup.com>
wrote:
string chaine1 = "valeur :"+valeur;
mais en C++
Idem, sauf qu'on écrit généralement std::string.
Si valeur n'est pas un std::string, on écrira généralement quelque
chose comme
std::string chaine1= "valeur : " + std::string (valeur);
ou
std::string chaine1= std::string ("valeur : ") + valeur;
On Fri, 31 Oct 2003 13:51:21 +0100, "Gilles" wrote:
string chaine1 = "valeur :"+valeur;
mais en C++
Idem, sauf qu'on écrit généralement std::string. Si valeur n'est pas un std::string, on écrira généralement quelque chose comme std::string chaine1= "valeur : " + std::string (valeur); ou std::string chaine1= std::string ("valeur : ") + valeur;
-- ;-)
Benoit Rousseau
Fabien LE LEZ wrote:
On Fri, 31 Oct 2003 13:51:21 +0100, "Gilles" wrote:
string chaine1 = "valeur :"+valeur;
mais en C++
Idem, sauf qu'on écrit généralement std::string. Si valeur n'est pas un std::string, on écrira généralement quelque chose comme std::string chaine1= "valeur : " + std::string (valeur); ou std::string chaine1= std::string ("valeur : ") + valeur;
Sauf qu'il n'existe pas de std::string( int )...
Le mieux c'est stringstream, mais je n'aime pas trop l'ecriture qui est un peu lourd...
Pourquoi n'ont ils pas fait un constructeur qui permettrait : ostringstream os << "valeur : " << valeur ; ? Il faut a chaque fois le mettre sur deux lignes, même pour un objet très temporaire...
-------------------------------------------- Benoît Rousseau : roussebe at spray dot se Jouez en programmant : http://realtimebattle.sourceforge.net/
Fabien LE LEZ wrote:
On Fri, 31 Oct 2003 13:51:21 +0100, "Gilles" <g.godard@znzgroup.com>
wrote:
string chaine1 = "valeur :"+valeur;
mais en C++
Idem, sauf qu'on écrit généralement std::string.
Si valeur n'est pas un std::string, on écrira généralement quelque
chose comme
std::string chaine1= "valeur : " + std::string (valeur);
ou
std::string chaine1= std::string ("valeur : ") + valeur;
Sauf qu'il n'existe pas de std::string( int )...
Le mieux c'est stringstream, mais je n'aime pas trop l'ecriture qui est
un peu lourd...
Pourquoi n'ont ils pas fait un constructeur qui permettrait :
ostringstream os << "valeur : " << valeur ;
?
Il faut a chaque fois le mettre sur deux lignes, même pour un objet très
temporaire...
--------------------------------------------
Benoît Rousseau : roussebe at spray dot se
Jouez en programmant : http://realtimebattle.sourceforge.net/
On Fri, 31 Oct 2003 13:51:21 +0100, "Gilles" wrote:
string chaine1 = "valeur :"+valeur;
mais en C++
Idem, sauf qu'on écrit généralement std::string. Si valeur n'est pas un std::string, on écrira généralement quelque chose comme std::string chaine1= "valeur : " + std::string (valeur); ou std::string chaine1= std::string ("valeur : ") + valeur;
Sauf qu'il n'existe pas de std::string( int )...
Le mieux c'est stringstream, mais je n'aime pas trop l'ecriture qui est un peu lourd...
Pourquoi n'ont ils pas fait un constructeur qui permettrait : ostringstream os << "valeur : " << valeur ; ? Il faut a chaque fois le mettre sur deux lignes, même pour un objet très temporaire...
-------------------------------------------- Benoît Rousseau : roussebe at spray dot se Jouez en programmant : http://realtimebattle.sourceforge.net/
Loïc Joly
Benoit Rousseau wrote:
Si valeur n'est pas un std::string, on écrira généralement quelque chose comme std::string chaine1= "valeur : " + std::string (valeur); ou std::string chaine1= std::string ("valeur : ") + valeur;
Sauf qu'il n'existe pas de std::string( int )...
Le mieux c'est stringstream, mais je n'aime pas trop l'ecriture qui est un peu lourd...
Si valeur n'est pas un std::string, on écrira généralement quelque
chose comme std::string chaine1= "valeur : " + std::string (valeur);
ou
std::string chaine1= std::string ("valeur : ") + valeur;
Sauf qu'il n'existe pas de std::string( int )...
Le mieux c'est stringstream, mais je n'aime pas trop l'ecriture qui est
un peu lourd...
Si valeur n'est pas un std::string, on écrira généralement quelque chose comme std::string chaine1= "valeur : " + std::string (valeur); ou std::string chaine1= std::string ("valeur : ") + valeur;
Sauf qu'il n'existe pas de std::string( int )...
Le mieux c'est stringstream, mais je n'aime pas trop l'ecriture qui est un peu lourd...
Benoit Rousseau wrote in message news:<3fa28b6e$0$1864$...
Fabien LE LEZ wrote:
On Fri, 31 Oct 2003 13:51:21 +0100, "Gilles" wrote:
string chaine1 = "valeur :"+valeur;
mais en C++
Idem, sauf qu'on écrit généralement std::string. Si valeur n'est pas un std::string, on écrira généralement quelque chose comme std::string chaine1= "valeur : " + std::string (valeur); ou std::string chaine1= std::string ("valeur : ") + valeur;
Sauf qu'il n'existe pas de std::string( int )...
Est qu'est-ce qu'il devrait faire ? Générer une chaîne de n espaces, ou ?
En Java, tout peut se convertir en chaîne. Avec un format en général pas très convivable, évidemment. Au point que je me suis jamais servi de cette facilité, et que j'ai bien regretté les vérifications d'erreur qu'il y avait en C++ à cet égard.
Le mieux c'est stringstream, mais je n'aime pas trop l'ecriture qui est un peu lourd...
Pourquoi n'ont ils pas fait un constructeur qui permettrait : ostringstream os << "valeur : " << valeur ; ?
Et comment accéder à la valeur générée ?
Au fond, c'est assez simple à simuler, si tu en as envie :
class TemporaryFormattedString { public: template< typename T > TemporaryFormattedString& operator<<( T const& value ) { myValue << value ; }
Sinon, il y a GB_Format, à ma site, qui supporte un formattage à la printf.
Dans tous les cas, si tu passes un char const* que tu as extrait d'un std::string, il faut que tu reflechis sur la durée de vie de la chaîne ainsi créée : est-ce que la fonction que tu appelles en fait une copie, ou est-ce qu'elle s'attend à ce que le code client s'en occupe ?
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
Benoit Rousseau <not.provided@no.spam> wrote in message
news:<3fa28b6e$0$1864$ba620e4c@reader0.news.skynet.be>...
Fabien LE LEZ wrote:
On Fri, 31 Oct 2003 13:51:21 +0100, "Gilles" <g.godard@znzgroup.com>
wrote:
string chaine1 = "valeur :"+valeur;
mais en C++
Idem, sauf qu'on écrit généralement std::string. Si valeur n'est pas
un std::string, on écrira généralement quelque chose comme
std::string chaine1= "valeur : " + std::string (valeur);
ou
std::string chaine1= std::string ("valeur : ") + valeur;
Sauf qu'il n'existe pas de std::string( int )...
Est qu'est-ce qu'il devrait faire ? Générer une chaîne de n espaces, ou ?
En Java, tout peut se convertir en chaîne. Avec un format en général pas
très convivable, évidemment. Au point que je me suis jamais servi de
cette facilité, et que j'ai bien regretté les vérifications d'erreur
qu'il y avait en C++ à cet égard.
Le mieux c'est stringstream, mais je n'aime pas trop l'ecriture qui
est un peu lourd...
Pourquoi n'ont ils pas fait un constructeur qui permettrait :
ostringstream os << "valeur : " << valeur ;
?
Et comment accéder à la valeur générée ?
Au fond, c'est assez simple à simuler, si tu en as envie :
class TemporaryFormattedString
{
public:
template< typename T > TemporaryFormattedString&
operator<<( T const& value )
{
myValue << value ;
}
Sinon, il y a GB_Format, à ma site, qui supporte un formattage à la
printf.
Dans tous les cas, si tu passes un char const* que tu as extrait d'un
std::string, il faut que tu reflechis sur la durée de vie de la chaîne
ainsi créée : est-ce que la fonction que tu appelles en fait une copie,
ou est-ce qu'elle s'attend à ce que le code client s'en occupe ?
--
James Kanze GABI Software mailto:kanze@gabi-soft.fr
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
Benoit Rousseau wrote in message news:<3fa28b6e$0$1864$...
Fabien LE LEZ wrote:
On Fri, 31 Oct 2003 13:51:21 +0100, "Gilles" wrote:
string chaine1 = "valeur :"+valeur;
mais en C++
Idem, sauf qu'on écrit généralement std::string. Si valeur n'est pas un std::string, on écrira généralement quelque chose comme std::string chaine1= "valeur : " + std::string (valeur); ou std::string chaine1= std::string ("valeur : ") + valeur;
Sauf qu'il n'existe pas de std::string( int )...
Est qu'est-ce qu'il devrait faire ? Générer une chaîne de n espaces, ou ?
En Java, tout peut se convertir en chaîne. Avec un format en général pas très convivable, évidemment. Au point que je me suis jamais servi de cette facilité, et que j'ai bien regretté les vérifications d'erreur qu'il y avait en C++ à cet égard.
Le mieux c'est stringstream, mais je n'aime pas trop l'ecriture qui est un peu lourd...
Pourquoi n'ont ils pas fait un constructeur qui permettrait : ostringstream os << "valeur : " << valeur ; ?
Et comment accéder à la valeur générée ?
Au fond, c'est assez simple à simuler, si tu en as envie :
class TemporaryFormattedString { public: template< typename T > TemporaryFormattedString& operator<<( T const& value ) { myValue << value ; }
Sinon, il y a GB_Format, à ma site, qui supporte un formattage à la printf.
Dans tous les cas, si tu passes un char const* que tu as extrait d'un std::string, il faut que tu reflechis sur la durée de vie de la chaîne ainsi créée : est-ce que la fonction que tu appelles en fait une copie, ou est-ce qu'elle s'attend à ce que le code client s'en occupe ?
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
kanze
Loïc Joly wrote in message news:<bnubun$ott$...
Benoit Rousseau wrote:
Si valeur n'est pas un std::string, on écrira généralement quelque chose comme std::string chaine1= "valeur : " + std::string (valeur); ou std::string chaine1= std::string ("valeur : ") + valeur;
Sauf qu'il n'existe pas de std::string( int )... Le mieux c'est stringstream, mais je n'aime pas trop l'ecriture qui est un peu lourd...
Ce qui est d'une valeur assez limitée dans ce cas-ci. Qu'est-ce qu'il fait avec 2.3, par exemple ? Ou 1.0/3.0 ?
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
Loïc Joly <loic.actarus.joly@wanadoo.fr> wrote in message
news:<bnubun$ott$1@news-reader1.wanadoo.fr>...
Benoit Rousseau wrote:
Si valeur n'est pas un std::string, on écrira généralement quelque
chose comme std::string chaine1= "valeur : " + std::string (valeur);
ou
std::string chaine1= std::string ("valeur : ") + valeur;
Sauf qu'il n'existe pas de std::string( int )...
Le mieux c'est stringstream, mais je n'aime pas trop l'ecriture qui
est un peu lourd...
Ce qui est d'une valeur assez limitée dans ce cas-ci. Qu'est-ce qu'il
fait avec 2.3, par exemple ? Ou 1.0/3.0 ?
--
James Kanze GABI Software mailto:kanze@gabi-soft.fr
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
Si valeur n'est pas un std::string, on écrira généralement quelque chose comme std::string chaine1= "valeur : " + std::string (valeur); ou std::string chaine1= std::string ("valeur : ") + valeur;
Sauf qu'il n'existe pas de std::string( int )... Le mieux c'est stringstream, mais je n'aime pas trop l'ecriture qui est un peu lourd...
Ce qui est d'une valeur assez limitée dans ce cas-ci. Qu'est-ce qu'il fait avec 2.3, par exemple ? Ou 1.0/3.0 ?
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
Loïc Joly
wrote:
Loïc Joly wrote in message news:<bnubun$ott$...
Benoit Rousseau wrote: [...]
Sauf qu'il n'existe pas de std::string( int )... Le mieux c'est stringstream, mais je n'aime pas trop l'ecriture qui est un peu lourd...
Ce qui est d'une valeur assez limitée dans ce cas-ci. Qu'est-ce qu'il fait avec 2.3, par exemple ? Ou 1.0/3.0 ?
La question concernait les int ("il n'existe pas de std::string( int )") et dans ce cas, lexical_cast marche assez bien.
Pour quelle définition de « assez bien » ? Et est-ce que l'exemple avec int est censé être exhaustif ?
En fait, comme son nom indique, lexical_cast est conçu pour faire des conversions de type, en passant par une chaîne. De ce fait, le format importe peu, à condition qu'il n'y a pas de perte d'information. Quand je veux une chaîne, en revanche, le format importe beaucoup, et une solution qui ne me permet pas de le contrôler n'est pas une solution.
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
Loïc Joly <loic.actarus.joly@wanadoo.fr> wrote in message
news:<bo6alv$q4l$1@news-reader4.wanadoo.fr>...
kanze@gabi-soft.fr wrote:
Loïc Joly <loic.actarus.joly@wanadoo.fr> wrote in message
news:<bnubun$ott$1@news-reader1.wanadoo.fr>...
Benoit Rousseau wrote:
[...]
Sauf qu'il n'existe pas de std::string( int )...
Le mieux c'est stringstream, mais je n'aime pas trop l'ecriture qui
est un peu lourd...
Ce qui est d'une valeur assez limitée dans ce cas-ci. Qu'est-ce
qu'il fait avec 2.3, par exemple ? Ou 1.0/3.0 ?
La question concernait les int ("il n'existe pas de std::string( int
)") et dans ce cas, lexical_cast marche assez bien.
Pour quelle définition de « assez bien » ? Et est-ce que l'exemple avec
int est censé être exhaustif ?
En fait, comme son nom indique, lexical_cast est conçu pour faire des
conversions de type, en passant par une chaîne. De ce fait, le format
importe peu, à condition qu'il n'y a pas de perte d'information. Quand
je veux une chaîne, en revanche, le format importe beaucoup, et une
solution qui ne me permet pas de le contrôler n'est pas une solution.
--
James Kanze GABI Software mailto:kanze@gabi-soft.fr
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
Ce qui est d'une valeur assez limitée dans ce cas-ci. Qu'est-ce qu'il fait avec 2.3, par exemple ? Ou 1.0/3.0 ?
La question concernait les int ("il n'existe pas de std::string( int )") et dans ce cas, lexical_cast marche assez bien.
Pour quelle définition de « assez bien » ? Et est-ce que l'exemple avec int est censé être exhaustif ?
En fait, comme son nom indique, lexical_cast est conçu pour faire des conversions de type, en passant par une chaîne. De ce fait, le format importe peu, à condition qu'il n'y a pas de perte d'information. Quand je veux une chaîne, en revanche, le format importe beaucoup, et une solution qui ne me permet pas de le contrôler n'est pas une solution.
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16