To_string niet aangegeven in de scope

Ik probeer de to_string(NUMBER)-functie in mijn Ubuntu-computer voor weken te maken, maar het werkt nooit in de QT-omgeving of ergens anders. Mijn code werkt perfect op mijn Mac OSX, maar wanneer ik het in Ubuntu probeer, klaagt het dat to_stringniet in scope wordt gedeclareerd. Alle oplossingen hiervoor zouden zeer op prijs worden gesteld. Ik heb geprobeerd de GCC-compiler bij te werken, maar het heeft het probleem niet opgelost. Help alstublieft.

Ik gebruik QT Creator 4.8.1 en ik gebruik C++ en de nieuwste versie van Ubuntu.

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

Ik miste de QMake_cxxflags + = -std = C++ 0x in het PRO-bestand.


Antwoord 1, Autoriteit 100%

Er kunnen verschillende redenen zijn waarom het niet voor u werkt: Misschien moet u de naam in aanmerking komen met std::, of Misschien heeft u geen C++ 11-ondersteuning.

Dit werkt, op voorwaarde dat u C++ 11 ondersteuning hebt:

#include <string>
int main()
{
  std::string s = std::to_string(42);
}

Om C++ 11-ondersteuning met G ++ of Clang in te schakelen, moet u de optie doorgeven -std=c++0x. U kunt ook -std=c++11gebruiken op de nieuwere versies van die compilers.


Antwoord 2, Autoriteit 43%

U moet het bestand compileren met C++ 11-ondersteuning

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

Antwoord 3, Autoriteit 11%

Ik heb dit probleem opgelost door de eerste regel in Application.mk van

te wijzigen

APP_STL := gnustl_static

Naar

APP_STL := c++_static

Antwoord 4, Autoriteit 4%

U moet enkele wijzigingen aanbrengen in de compiler.
In Dev C++ Compiler:
1. Ga naar Compiler-instellingen / compiler-opties.
2. Klik op het tabblad Algemeen
3. Vink het selectievakje aan (voeg de volgende opdrachten toe bij het bellen van de compiler.
4. Schrijf -std = C++ 11
5. Klik op OK


Antwoord 5, Autoriteit 4%

Deze fout is, zoals hierboven correct geïdentificeerd, is het gevolg van de compiler die C++ 11 of hoger is gebruikt. Dit antwoord is voor Windows 10 .

voor C++ 11 en boven standaardondersteuning in CodeBlocks Versie 17:

  1. Klik op Instellingen in de werkbalk.

  2. Een vervolgkeuzemenu verschijnt. Selecteer Compiler -optie.

  3. Kies Global Compiler-instellingen .

  4. Selecteer in de werkbalk in dit nieuwe venster in het tweede deel Compiler-instellingen .

  5. Kies vervolgens Compiler Flags -optie in onderstaande werkbalk.

  6. Vouw Algemeen tabblad. Controleer de C++ -standaard waaraan u uw compiler wilt volgen.

  7. Klik op OK .

voor degenen die proberen C++ 11-ondersteuning in sublieme tekst te krijgen.

  1. Download Mingw Compiler versie 7 of hoger. In de versies hieronder is de standaard die wordt gebruikt C++ -standaard C++ 98, terwijl in versies hoger dan 7, de standaard gebruikte standaard C++ 11 is.

  2. Kopieer de map in Main C Drive. Het zou niet in elke andere map in C-drive zijn.

  3. Hernoem de map als Mingw . Deze naam is Case Ongevoelig, dus het moet elke variatie van MingW en mogen geen andere tekens in de naam opnemen.

  4. Ga vervolgens naar Milieuvariabelen en bewerk de padvariabele. Voeg dit toe “c: \ mingw \ bin ” en klik op OK.

  5. U kunt de versie van G ++ in CMD controleren door g++ -vte typen.

  6. Dit moet voldoende zijn om C++ 11 in sublieme tekst in te schakelen.

Als u ingangen en uitgangen ook van invoerbestanden voor competitieve programmeerdoeleinden wilt ondernemen, volgt u deze Link .


Antwoord 6

//Try this if you can't use -std=c++11:-
int number=55;
char tempStr[32] = {0};
sprintf(tempStr, "%d", number);

Other episodes