web-dev-qa-db-fra.com

cygwin g ++ std :: stoi ":" stoi "n'est pas membre de" std

J'ai:

-cygwin 1.7.25 sur Windows 7/32bit

-g ++ --version -> g ++ (GCC) 4.8.2

-libstdc ++. a -> gcc-g ++ - 4.8.2-1

J'ai essayé de faire un c ++ Bonjour tout le monde:

#include <string>

int main() 
{
   std::string s = "123";
   int i = std::stoi(s);
}

la compilation donne:

$ g++ -std=c++11 main.cpp
main.cpp: In function ‘int main()’:
main.cpp:6:10: error: ‘stoi’ is not a member of ‘std’
  int i = std::stoi(s);

J'ai cherché pendant des heures mais je ne pouvais toujours pas trouver de solution. Quel est le problème ici?

17
user3021700

C'est un bogue, peut-être un portage incomplet d'un code de bibliothèque vers cygwin (c'est une fonctionnalité de cplusplus11) - certains éléments doivent être modifiés après tout. Assurez-vous de le signaler.

La solution est facile bien sûr: #include <cstdlib> strtol(s.c_str(),0,10);

www.cplusplus.com/.../strtol

Un bug de mingw similaire est mentionné aussi ici

std :: stoi n'existe pas en g ++ 4.6.1 sur MinGW

11
user3125280

J'ai le même problème hier. "erreur: 'stoi' n'est pas un membre de 'std'."

Tout d'abord, je me suis assuré que c ++ 11 était activé. Ensuite, j'ai mis à jour le compilateur g ++ vers la version la plus récente. Après cela, cette erreur a disparu.

3
ShuaiYu8

Le compilateur n'est pas pris au sérieux. Sous Windows, le mieux est d’utiliser probablement Visual Studio, car il est toujours mis à jour. Le bogue ici est que les macro-définitions sont fausses pour commencer. Le problème commence par iomanip.h et iosbase. Donc, ils devraient changer tout leur code. Il existe des correctifs créés par les utilisateurs, mais je ne leur ferais pas confiance, car ils pourraient contenir encore plus de bogues que les copies originales. Mais c'est à vous de décider, je m'en tiens à l'édition Visual Studio Express.

1
Josh

stoi ne fonctionne correctement que sur mingw64 pour moi ... Si vous utilisez Codeblocks, n'oubliez pas de vérifier si le compilateur de vos projets est défini sur mingw64.

0
srrr21