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 #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