comment faire un cast d'un CString en int ? - C++ - Programmation
Marsh Posté le 23-12-2005 à 20:03:12
Code :
|
Marsh Posté le 23-12-2005 à 20:27:09
Joel F a écrit :
|
merci ! mais j'aurais quelques petites questions :
1)pkoi tu mets std:: devant ostringstream
2)qu'est ce que ostringstream ? str() et LPCTSTR ?
Marsh Posté le 23-12-2005 à 20:33:45
std :: c'est el namespace stadnard de la STL ou se trouve ostringstream
Ensuite : LPCSTR c'ets le type WIn32 pour pointeru sur char*, CString a un cast vers ce type.
le reste : http://www.cplusplus.com/ref/iostream/ostringstream/
Marsh Posté le 23-12-2005 à 21:07:58
j'ai essayé ça :
Code :
|
mais ça me met cette erreur :
error C2296: '<<' : illegal, left operand has type 'class std::basic_ostringstream<char,struct std::char_traits<char>,class std::allocator<char> > (__cdecl *)(const char *)'
Marsh Posté le 23-12-2005 à 21:09:30
hmmm c'est un istringstream qu'il te faut pardon, et utilise >>
Code :
|
ca m'apprendra a poster avec la grippe
Marsh Posté le 23-12-2005 à 21:17:17
j'ai mis istringstream et >> et j'ai tjs une erreur
error C2296: '>>' : illegal, left operand has type 'class std::basic_istringstream<char,struct std::char_traits<char>,class std::allocator<char> > (__cdecl *)(const char *)'
Marsh Posté le 23-12-2005 à 21:43:35
tmp >> val ...
bon je vais me coucher :
Code :
|
Marsh Posté le 24-12-2005 à 10:08:33
Que se passe t'il si str ne représente pas un entier ?
Code :
|
Marsh Posté le 24-12-2005 à 10:27:30
slash33 a écrit : Que se passe t'il si str ne représente pas un entier ?
|
val n'est pas modifié.
Code :
|
|
Mais je pense que c'est compilo-dependent
Marsh Posté le 24-12-2005 à 10:36:15
Il y aurait peut être une astuce avec la méthode héritée ios::exceptions()
En fait l'opérateur << est hérité de la classe istream. Il faut probablement remonter l'héritage pour finir par comprendre ce qui se passe si la chaîne n'est pas du bon format.
La doc de isstringstream : http://www.cplusplus.com/ref/iostream/istringstream/
En fin de compte la solution réside peut être dans ios::fail()
Marsh Posté le 24-12-2005 à 10:42:39
slash33 a écrit : Il y aurait peut être une astuce avec la méthode héritée ios::exceptions() |
oui
Code :
|
|
Marsh Posté le 24-12-2005 à 10:46:37
Joel F a écrit :
|
le e.what() ne présente pas un gros intérêt vu le message fourni.
Marsh Posté le 24-12-2005 à 10:51:26
bah si, en gros il te dit que le failbit est à 1 , donc que l'extraction a echoué
Marsh Posté le 24-12-2005 à 10:53:26
D'après la doc d'ios::exceptions(), chaque classe stream a une collection d'exceptions qui lui est propre à la manière de ifstream::failure.
Je n'ai pas trouvé leur description dans la doc.
Edit: parlé trop vite -> http://www.cplusplus.com/ref/iostr [...] ilure.html
Marsh Posté le 23-12-2005 à 19:49:10
Salut,
tout est dans la question. le cast classique :
var = (int) var2
ne marche pas.