Maison  >  Article  >  développement back-end  >  Pourquoi std::stoi ne fonctionne-t-il pas avec MinGW 4.6.1 sous Windows ?

Pourquoi std::stoi ne fonctionne-t-il pas avec MinGW 4.6.1 sous Windows ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-30 09:29:27624parcourir

Why is std::stoi not working with MinGW 4.6.1 on Windows?

Erreur de compilation avec std::stoi dans MinGW 4.6.1

Lors de la tentative de compilation d'un programme à l'aide de std::stoi dans MinGW 4.6 .1, un message d'erreur indiquant que 'stoi' n'est pas membre de 'std' peut apparaître. Ce problème provient d'une déclaration non standard de vswprintf sous Windows.

Cause du problème

La bibliothèque standard GNU définit la macro _GLIBCXX_HAVE_BROKEN_VSWPRINTF sous Windows, qui désactive le fonctions de conversion, y compris std::stoi. Cette macro est activée lors de l'utilisation de MinGW sous Windows en raison d'un problème avec vswprintf sur cette plate-forme.

Résolution du problème

Pour résoudre ce problème, envisagez la solution de contournement suivante :

  1. Modifier les fichiers d'en-tête MinGW (non recommandé) :

    • Supprimez la macro !définie(_GLIBCXX_HAVE_BROKEN_VSWPRINTF) sur la ligne 2754 de .. ./lib/gcc/mingw32/4.6.1/include/c /bits/basic_string.h.
    • Ajoutez la macro autour des lignes 2905 à 2965, qui font référence à std::vswprintf.

    Cette modification désactivera les fonctions std::to_wstring, mais d'autres fonctions de conversion devraient devenir disponibles.

Informations supplémentaires

  • Pour plus de détails sur le problème, reportez-vous au rapport GNU Bugzilla : http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37522.
  • Cette solution de contournement peut ne pas convenir à tous utilisateurs et doit être mis en œuvre avec prudence.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn