to_string n'est pas un membre de mst, dit-g++ (mingw)
Je fais un peu de vocabulaire se souvenir de programme où les mots seraient flashé sur moi par hasard d'autres significations. Je veux utiliser la bibliothèque C++ standard que Bjarne Stroustroup nous dit, mais j'ai rencontré une étrange en apparence problème à droite de la porte.
Je veux changer un long
entier dans std::string
afin d'être en mesure de le stocker dans un fichier. J'ai utilisé to_string()
pour la même chose. Le problème c'est que quand je compile avec g++ (version 4.7.0 comme l'a mentionné dans son --version du drapeau), il est dit:
PS C:\Users\Anurag\SkyDrive\College\Programs> g++ -std=c++0x ttd.cpp
ttd.cpp: In function 'int main()':
ttd.cpp:11:2: error: 'to_string' is not a member of 'std'
Mon programme qui donne cette erreur est:
#include <string>
int main()
{
std::to_string(0);
return 0;
}
Mais, je sais qu'il ne peut pas être à cause de la bibliothèque msdn dit clairement il existe et une question précédente sur Stack Overflow (g++ version 4.5) dit qu'il peut être activé avec la -std=c++0x
drapeau. Ce que je fais mal?
libstdc++
est obsolète?Il travaux sur Ideone, qui utilise GCC 4.5.1.
Cela fonctionne pour moi avec g++ 4.6.3. Votre erreur fait référence à la ligne 11. Vous dites que votre programme a essentiellement été réduit à" votre code, mais le code que vous avez posté donner à cette erreur?
Yep c'est le programme exact. Je dois le modifier pour le rendre plus clair. De Plus, ce est que les int-ce que je fais là?
Également, cela ne fonctionne pas pour moi, même si je suis en utilisant GCC 5.3.1. Toutefois, les correctifs, il est tout simplement à l'aide d'un plus tard, C++ standard - à-d. par la compilation avec le drapeau
-std=c++11
ou plus.OriginalL'auteur Anurag Kalia | 2012-10-19
Vous devez vous connecter pour publier un commentaire.
C'est un bug connu sous MinGW. Pertinentes Bugzilla. Dans la section des commentaires, vous pouvez obtenir un patch à le faire fonctionner avec MinGW.
Ce problème a été corrigé dans MinGW-w64 distributions de plus que GCC 4.8.0 fournis par le MinGW-w64 projet. Malgré son nom, le projet fournit toolchains pour 32 bits avec 64-bit. Le Nuwen MinGW distro résout également ce problème.
J'utilise MinGW-w64 version 4.8.1 et il ne fonctionne pas. J'ai copié le programme exact de la question. J'ai toujours l' 'to_string" n'est pas un membre de 'std' erreur. J'ai compilé en tant que: g++ -std=c++0x -o tostring_test.exe tostring_test.cpp
Je ne peux pas expliquer pourquoi, mais j'ai eu
std::to_string
de travail par l'installation de MinGW 4.8.1 (plus précisément,x32-4.8.1-posix-dwarf-rev5
) MinGW-construit. En revanche,to_string
pas travailler avec MinGW 4.8.1 installé soit à travers le "mingw-get" l'installation ou la TDM-GCC paquet.Le patch n'était pas assez pour moi, j'ai dû
#define _GLIBCXX_USE_C99 1
dansC:\MinGW\lib\gcc\mingw32\4.8.1\include\c++\mingw32\bits\c++config.h
tel que décrit icisont des versions de MinGW-w64, un autre projet de MinGW. L'une des raisons que MinGW-w64 été initiés a été donc ils pourraient en fait de corriger des bugs comme celle de ce fil était sur.
OriginalL'auteur Rapptz
n'oubliez pas d'inclure
#include <sstream>
J'appelle votre fonction à partir d'une autre source fichier : patch::to_string(errorCode) (où errorCode est de type int) et le compilateur me donne une erreur à cette ligne. L'erreur: undefined reference to `std::string patch::to_string<int>(int&)' Cependant, à chaque fois que je inclure votre code dans le même fichier source compilateur ne se plaint pas. Je suis à essayer de comprendre quel est le problème.
Veuillez noter que ce n'est pas une solution exacte en ce qui concerne les zéros à droite. L'original
std::to_string(0.75)
redeviendra"0.750000"
(la valeur par défaut chaîne de format %d) bien que ce sera de retour"0.75"
. Voir ici pour une raison: stackoverflow.com/a/13686914/785171OriginalL'auteur cMinor
Comme l'a suggéré cela peut être un problème avec votre version de compilateur.
Essayez d'utiliser le code suivant pour convertir un
long
àstd::string
:Juste une remarque, si vous voulez un
std::string
, vous souhaitez utiliser.str()
à la place.Veuillez noter que ce n'est pas une solution exacte en ce qui concerne les zéros à droite. L'original
std::to_string(0.75)
redeviendra"0.750000"
(la valeur par défaut chaîne de format %d) bien que ce sera de retour"0.75"
. Voir ici pour une raison: stackoverflow.com/a/13686914/785171OriginalL'auteur andre
Utiliser cette fonction...
Il est bon d'avoir une solution de contournement, mais je pense que il est généralement préférable de comprendre pourquoi les mst solution n'est pas de la compilation plutôt que de pirater quelque chose ensemble
La façon "standard" (std::to_string) travaille souvent-sauf quand ça ne marche pas. succession est la "norme" solution de contournement.
Veuillez noter que ce n'est pas une solution exacte en ce qui concerne les zéros à droite. L'original
std::to_string(0.75)
redeviendra"0.750000"
(la valeur par défaut chaîne de format %d) bien que ce sera de retour"0.75"
. Voir ici pour une raison: stackoverflow.com/a/13686914/785171OriginalL'auteur Nirav Patel
to_string est une question d'actualité avec Cygwin
Voici un nouveau-ish réponse à un vieux thread. Un nouveau ne viennent mais a été rapidement annulée,
Cygwin: g++ 5.2: ‘to_string " n'est pas un membre de ‘std’.
Trop mal, peut-être qu'on aurait eu droit à une mise à jour de réponse. Selon @Alex, Cygwin g++ 5.2 n'est toujours pas de travail en date du 3 novembre 2015.
Sur janvier 16, 2015 Corinna Vinschen, un Cygwin responsable chez Red Hat dit que le problème était une lacune de newlib. Il ne prend pas en charge la plupart des long double fonctions et n'est donc pas C99 conscient.
Red Hat est,
Le 25 Octobre 2015 Corinne a dit aussi,
Donc là, nous avons. Peut-être que l'un de nous qui a la connaissance, et le temps, peut contribuer et être le héros.
Newlib est ici.
En voyant comment ils ont migré à partir de l'envoi de correctifs par e-mail à git que cette année, il se sent décourageant...
OriginalL'auteur
Modifier la valeur par défaut standard C++
De (COMPILATION d'un FICHIER) erreur: 'to_string" n'est pas un membre de 'std'
À (COMPILER le FICHIER de SUCCÈS)
Testé sur Cygwin G++(GCC) 5.4.0
OriginalL'auteur Joma
Le fait est que libstdc++ effectivement pris en charge
std::to_string
en *-w64-mingw32 cibles depuis 4.8.0. Cependant, cela n'inclut pas le support pour MinGW.org, Cygwin et variantes (par exemple, *- pc-msys de MSYS2). Voir aussi https://cygwin.com/ml/cygwin/2015-01/msg00245.html.J'ai mis en œuvre une solution de contournement avant le bug résolu pour MinGW-w64. Être différent du code dans d'autres réponses, c'est un imitateur de libstdc++ (autant que possible). Il ne nécessite pas de chaîne de stream de la construction, mais dépend de la libstdc++ extensions. Même maintenant, je suis en utilisant mingw-w64 cibles sur Windows, il fonctionne toujours bien pour de multiples autres objectifs (tant que
long double
fonctions ne sont pas utilisés).OriginalL'auteur FrankHB
Pour quiconque de vous demander pourquoi ce qui se passe sur Android, c'est probablement parce que vous êtes un mauvais c++ de la bibliothèque standard. Essayez de changer la bibliothèque c++ dans votre construction.gradle de
gnustl_static
àc++_static
et le c++ standard dans votre CMakeLists.txt de-std=gnu++11
à-std=c++11
OriginalL'auteur kynnysmatto
Si nous utilisons un modèle-la lumière-la solution (comme illustré ci-dessus) comme suit:
Malheureusement, nous aurons des problèmes dans certains cas. Par exemple, pour static const membres:
php
rpc
Et de la liaison:
Ici est une façon de résoudre le problème (ajouter le type size_t):
HTH.
OriginalL'auteur Boris
to_string() n'est présent que dans c++11, donc si c++ version est moins d'utiliser certaines des méthodes alternatives telles que sprintf ou ostringstream
OriginalL'auteur Aishwarya Mittal
dans codeblocks aller dans configuration -> compilateur de configuration -> compilateur drapeau -> sélectionnez std c++11 fait.
J'ai eu le même problème ... maintenant ça fonctionne !
OriginalL'auteur ShifaT
Cela m'est arrivé aussi, j'ai juste écrit une petite fonction plutôt que de se préoccuper de la mise à jour de mon compilateur.
Ce n'est pas un substitut pour le std::to_string et certainement pas une réponse à la question.
merci! qui m'a sauvé beaucoup de temps!
N'oubliez pas de mettre en œuvre des std::cout trop! Beaucoup mieux de simplement re-mettre en œuvre avec beaucoup de bugs supplémentaires que figure le mal à la racine!
vous êtes en rendant les choses overcomplex. Juste
ones_char = '0' + number % 10;
OriginalL'auteur Jeff Pope