La conversion d'un std::wstring à int
Je présume que cela est très simple, mais je ne peux pas le faire fonctionner.
Je suis simplement en train d'essayer de convertir un std::wstring à un int.
J'ai essayé les deux méthodes de mesure.
La première est d'utiliser le "C" avec "atoi" comme suit:
int ConvertedInteger = atoi(OrigWString.c_str());
Cependant, VC++ 2013 me dit:
Erreur, l'argument de type "const wchar_t *" sont incompatibles avec le paramètre de type "const char_t *"
Donc ma seconde méthode est d'utiliser ce, par une recherche Google:
std::wistringstream win(L"10");
int ConvertedInteger;
if (win >> ConvertedInteger && win.eof())
{
//The eof ensures all stream was processed and
//prevents acccepting "10abc" as valid ints.
}
Cependant VC++ 2013 me dit ceci:
"Erreur: le type incomplète est pas autorisé."
Ce que je fais mal?
Est-il un meilleur moyen de convertir un std::wstring int?
Je vous remercie pour votre temps.
Avez-vous
Veuillez essayer de convertir la chaîne de caractères à l'aide de
Vous pouvez toujours construire un
aussi, je pense
#include <sstream>
? Votre code avec les stringstream devrait fonctionner.Veuillez essayer de convertir la chaîne de caractères à l'aide de
int ConvertedInteger = _wtoi(OrigWString);
...Vous pouvez toujours construire un
std::string
de la chaîne et de l'utilisation std::stoi
. Vous pourriez encourir une allocation de mémoire si le nombre est assez grand, mais je doute que c'est pire que d'utiliser stringstreams.aussi, je pense
#include <istream>
est nécessaire pour wistringstream
OriginalL'auteur user3434662 | 2014-04-19
Vous devez vous connecter pour publier un commentaire.
Pas besoin de retourner à l'api C (
atoi
), ou non portable API (_wtoi
), ou solution complexe (wstringstream
) parce qu'il y a déjà simple, Api standard pour faire ce genre de conversion :std::stoi
etstd::to_wstring
.sto*()
fonctions de la famille est parce qu'ils ont tous lancer des exceptions.ato*()
ne pasOriginalL'auteur Thomas Petit
vous pouvez utiliser l'API disponibles à partir de
wstring.h
.pour convertir
WString
àint
essayerint ConvertedInteger = _wtoi(OrigWString);
.pour l'usage de référence msdn.microsoft.com/en-us/library/aa273408(v=vs. 60).aspx.
Je veux dire que lorsque nous écrire/ lire des données vers/ à partir d'un objet de flux, il travaille sur la chaîne de valeurs de l'OP cas, il est wstring
L'OP est à l'aide de
wistringstream
qui traite avecwchar_t
s, paschar
s. Une fois de plus, son code fonctionne, regarde le lien dans mon commentaire précédent. Le message d'erreur sur l'utilisation d'un type incomplète veut probablement dire qu'il a oublié d'inclure certains fichier d'en-tête.Ohh, Merci pour la correction de moi. Je vais modifier la réponse...
OriginalL'auteur A B