Afficher tableau Fifo conteneur liste - '' stoi was not declared''

Résolu/Fermé
DanielP - Modifié le 3 déc. 2020 à 00:47
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 - 3 déc. 2020 à 21:41
/*
Bonjour j'essaie d'afficher mon tableau Nation Fifo - et j'ai l'erreur ''Stoi was not declared''
Pouvez- vous m'aider SVP cela me ferait un grand plaisir
Merci
Daniel P




1. de lire le fichier, de créer une liste (conteneur liste de la librairie standard) des pays dans l'ordre FIFO (First In First Out)
2. d'afficher le premier et le dernier pays de la liste en surchargeant l'opérateur d'affichage
3. de modifier la capitale de CHINE, c'est PEKIN;
4. de calculer et d'afficher la superficie moyenne des pays d'Asie
5. de supprimer le pays DES OURAGANS;
6. de chercher et d'afficher les pays suivants :
- Canada, Bresil, France, Japon, Des Merveilles
7. de déterminer et d'afficher les informations :
a) du premier pays d'Afrique dans la liste
b) du dernier pays d'Europe dans la liste
8. de trier la liste selon le nom des pays et d'afficher les informations de 6 ers pays.


*/

#include <iostream>  // pour entrée-sortie  cin, cout
#include <iomanip>   // pour le formatage
#include <string.h>
#include <fstream>   // pour les fichiers
#include <list>
#include <algorithm>
#include<string>
#include <stdlib.h>
#include <stdio.h>


using namespace std; // librairie standard

class Nation
{
   private :
      string nom, capitale;
      int continent, superficie, population;
   public :
      Nation(int continent, string nom, string capitale, int superficie, int population)
      {
       this->continent = continent;
       this->nom = nom ;
        this->capitale = capitale;
        this->superficie = superficie;
        this->population = population;    
        
      }                         
      
      Nation()
        {
        }
        
      // surcharger l'opéraur d'affichage :  
      friend ostream& operator << (ostream&, const Nation&);  
      
      int getContinent()
      {
          return continent;  
      }
      string getNom()
      {
          return nom;  
      }
      string getCapitale()
      {
          return capitale;  
      }

};

struct Element
{ 
  Nation nation ;
  Element * suivant ;
};

ostream& operator << (ostream& sortie, const Nation& uneNation)
{
   sortie.setf(ios::fixed);
   sortie.setf(ios::showpoint);
    
    
//2ETATS-UNIS                         WASHINGTON                 9629047      291289535
   sortie << setw(2) << uneNation.continent
          << setw(10) << uneNation.nom
          << setw(15) << setprecision(2) << uneNation.capitale   
          << setw(23) << setprecision(1) << uneNation.superficie
          << setw(30) << setprecision(1) << uneNation.population << endl;
   return sortie;       
}

typedef Element * Pointeur ;


    // conseils : dessiner le schéma pour créer la liste avec 3 lignes de données          
   void lireRemplir(const char nomFichier[], list <Nation> & liste) 
    {   
 //int continent, superficie, population;
 //string nom, capitale;
 
 //liste = NULL ;
  ifstream  aLire (nomFichier, ios::in); // localiser et ouvrir pour la lecture
         
           
  string ligneLue;
  while (  getline(aLire, ligneLue, '\n'))
  {
              int continent = ligneLue[0];
     string nom = ligneLue.substr(1,20); 
     string capitale  = ligneLue.substr(30,20); 
     int superficie = stoi(ligneLue.substr(64,15)); 
     //int superficie = ligneLue[0];
     //int population = stoi(ligneLue.substr(0, 30));
     int population = ligneLue[30];

                 
     liste.push_back(Nation(continent, nom, capitale, superficie, population));
        }    
   
  aLire.close();   // fermer le fichier à lire
  
 }

  void afficher(list<Nation> liste, string mess)
   {
    cout << "Contenu de la liste " << mess << " :\n";
    cout << "Elle contient " << liste.size() << " entier(s) :\n";

    for (list<Nation>::iterator il = liste.begin(); il != liste.end(); il++)
     cout << setw(5) << *il ;

    cout << endl;

   }

 
 //afficher le contenu d'une liste
//void afficher(Pointeur liste) {
// cout << "Contenu de la liste des personnes :\n";
// int n = 0;
// while (liste) {
//  cout << setw(6) << n++ <<")  " << liste->nation ;
//  liste = liste->suivant;            
// }   
//}
//    
//void afficher(Pointeur liste, char natiVoulu) {
// bool trouve = false;
// while (liste)  {  
//  if ( liste->nation.getContinent() == natiVoulu) {
//   trouve = true;
//   cout << "\nCoordonnees de la premiere personne de sexe "
//   <<  natiVoulu << " : " << endl 
//   << liste->nation << endl;
//   break; // quitter la boucke wgh
//  }     
//  liste = liste->suivant;                        
// }
// if (!trouve)
//  cout << "Aucune personne de sexe : " << natiVoulu << endl;
//}
//    
int main(){
 
 list<Nation> liste;  // la liste est vide au debut
    if (liste.begin() == liste.end()) 
       cout << "Liste vide au debut" << endl;
    cout << "liste.size() vaut "   << liste.size() << endl;
        
 
 //1. de lire le fichier, de créer une liste (conteneur liste de la librairie standard) des pays dans l'ordre FIFO (First In First Out)
    int sum = 0; // open the txt file 
    int x;
    ifstream inFile;
    
  //Pointeur liste, dernier;
 lireRemplir("Nations_A20.txt",liste);
  afficher(liste, " Nation ");
 

//  afficher(liste);
 
  // afficher les coordonnees du 1er homme de la liste
  //afficher(liste); 

 return 0;

 
}
/* Exécution:


*/
            
                
A voir également:

1 réponse

Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
3 déc. 2020 à 21:41
Bonjour,

std::stoi()
est apparu en 2011, peut-être que ton compilateur est trop ancien ou peut-être qu'il faut explicitement demander l'utilisation du C++11. Pour les compilateurs moyennement anciens il faut leur ajouter aux directives de compilation
-std=c++11
.
1