Convertir MFC CString entier
Comment convertir un CString
objet d'entier dans la bibliothèque MFC.
Vous devez vous connecter pour publier un commentaire.
Comment convertir un CString
objet d'entier dans la bibliothèque MFC.
Vous devez vous connecter pour publier un commentaire.
Si vous utilisez
TCHAR.H
routine (implicitement ou explicitement), assurez-vous d'utiliser_ttoi()
fonction, de sorte qu'il compile pour Unicode et ANSI compilations.Plus de détails: https://msdn.microsoft.com/en-us/library/yd5xkb5c.aspx
L'approche la plus simple est d'utiliser le
atoi()
fonction trouvée dansstdlib.h
:Toutefois, cela ne traite pas bien les cas où la chaîne ne contient pas un entier valide, auquel cas vous devriez enquêter sur la
strtol()
fonction:Un
_ttoi
fonction peut convertirCString
en entier, à la fois à l'échelle char et ansi char de travail. Ci-dessous les détails:vous pouvez également utiliser un bon vieux sscanf.
Le problème avec la accepté de répondre, c'est qu'il ne peut pas signaler l'échec. Il y a
strtol
(Chaîne de caractères DE Long) qui peut. Il fait partie d'une grande famille:wcstol
(Chaîne de Caractères Larges DE Long, par exemple Unicode),strtoull
(À Unsigned Long Long, 64bits+),wcstoull
,strtof
(Float) etwcstof
.ou
atoi
de travail, si vous voulez convertirCString
àint
.La solution canonique est d'utiliser le C++ de la Bibliothèque Standard pour la conversion. En fonction du type de retour, la suite de fonctions de conversion sont disponibles: std::stoi, std::stol, ou std::stoll (ou leurs homologues non signé std::stoul, std::stoull).
La mise en œuvre est assez simple:
Toutes ces implémentations signaler des erreurs par le biais d'exceptions (std::invalid_argument si aucune conversion n'a pu être effectué std::out_of_range si la valeur convertie serait tomber hors de la plage du type de résultat). La construction de la temporaire
std::[w]string
pouvez également jeter.Les implémentations peuvent être utilisés pour les deux Unicode ainsi que MBCS projets.
Définir dans msdn: https://msdn.microsoft.com/en-us/library/yd5xkb5c.aspx
CString est wchar_t chaîne. Donc, si vous voulez convertir Cstring int, vous pouvez utiliser:
CString
dépend de la_UNICODE
et_MBCS
symboles de préprocesseur. Il peut stocker une codé en UTF-16 chaîne Unicode, un des caractères DBCS chaîne ou une chaîne de caractères ASCII. Ce qui suggère qu'il s'agirait toujours d'une chaîne Unicode est tout simplement faux, désolé.Vous pouvez utiliser le C atoi fonction ( dans un try /catch de la clause, car la conversion n'est pas toujours possible)
Mais il n'y a rien dans les classes MFC pour faire mieux.