web-dev-qa-db-fra.com

to_string non déclaré dans la portée

J'essaie de faire fonctionner la fonction to_string(NUMBER) sur mon ordinateur Ubuntu pendant des semaines, mais elle ne fonctionne jamais dans l'environnement QT ou ailleurs. Mon code fonctionne parfaitement sur mon Mac OSX, mais lorsque j'essaie de l'exécuter dans Ubuntu, il se plaint que to_string n'est pas déclaré dans la portée. Toutes les solutions à cela seraient grandement appréciées. J'ai essayé de mettre à jour le compilateur gcc mais cela n'a pas résolu le problème. Veuillez aider.

J'utilise QT Creator 4.8.1 et j'utilise C++ et la dernière version d'Ubuntu.

int Bint::operator*(int temp){
    Bint b(to_string(temp));
    return ((*this)*b);
}

Il me manquait le QMAKE_CXXFLAGS + = -std = c ++ 0x dans le fichier pro.

Il peut y avoir différentes raisons pour lesquelles cela ne fonctionne pas pour vous: vous devez peut-être qualifier le nom avec std::, ou vous ne disposez peut-être pas de la prise en charge de C++ 11.

Cela fonctionne, à condition que vous preniez en charge C++ 11:

#include <string>

int main()
{
  std::string s = std::to_string(42);
}

Pour activer la prise en charge de C++ 11 avec g ++ ou clang, vous devez passer l'option -std=c++0x. Vous pouvez aussi utiliser -std=c++11 sur les nouvelles versions de ces compilateurs.

19
juanchopanza

vous devez compiler le fichier avec le support c ++ 11

g++ -std=c++0x  -o test example.cpp
11
The Beast

J'ai résolu ce problème en modifiant la première ligne dans Application.mk de

APP_STL := gnustl_static

à

APP_STL := c++_static
3
MikeC

Vous devez apporter quelques modifications dans le compilateur. Dans le compilateur Dev C++: 1. Allez dans Paramètres du compilateur/Options du compilateur. 2. Cliquez sur l'onglet Général 3. Cochez la case (Ajoutez les commandes suivantes lors de l'appel du compilateur. 4. écrivez -std = c ++ 11 5. cliquez sur OK

0
ashwani nagar