2009-01-19 6 views
-2

Je veux éliminer les déchets que je reçois sur le vector<int> synsAux ci-dessous. Il devrait imprimer:Obtenir cette jonque de mon vecteur

1 
7 
7 
1 

Je reçois un supplément de 2 avant le premier et le troisième chiffre, pourquoi? Est-ce 2 une valeur ASCII pour l'espace vide ou quelque chose? Comment puis-je éviter sa lecture?

Ceci est le fichier dictionnaire nécessaire pour exécuter le programme:

dictionary.txt 
1 cute 
2 hello 
3 ugly 
4 easy 
5 difficult 
6 tired 
7 beautiful 
synonyms 
1 7 
7 1 
antonyms 
1 3 
3 1 7 
4 5 
5 4 
7 3 

#include <iostream> 
#include <fstream> 
#include <string> 

#include <sstream> 
#include <vector> 


using namespace std; 

class WordInfo{ 
     public: 
      WordInfo(){} 
      ~WordInfo() {  
      } 

      int id() const {return myId;} 

      void readWords(istream &in) 
      { 
       in>>myId>>word;  
      } 

      void pushSynonyms (string synline, vector <WordInfo> wordInfoVector) 
      { 
       stringstream synstream(synline); 
       vector<int> synsAux; 
       int num; 
       while (synstream >> num) synsAux.push_back(num); 
       cout<<synsAux.size(); 

        for (int i=0; i<synsAux.size(); i++){ 
         cout<<synsAux[i]<<endl; 
         // THIS LINE SHOULD BE PRINTING 
         //1 
         //7 
         //7 
         //1 
       }  
      } 

      void pushAntonyms (string antline, vector <WordInfo> wordInfoVector) 
      { 

      } 

      //--dictionary output function 
      void printWords (ostream &out) 
      { 
       out<<myId<< " "<<word;  
      } 

      //--equals operator for String 
      bool operator == (const string &aString)const 
      { 
          return word ==aString; 
      } 

      //--less than operator 
      bool operator <(const WordInfo &otherWordInfo) const 
      { return word<otherWordInfo.word;} 

      //--more than operator 
      bool operator > (const WordInfo &otherWordInfo)const 
      {return word>otherWordInfo.word;} 

      private: 
        vector <int> mySynonyms; 
        vector <int> myAntonyms; 
        string word; 
        int myId; 
     }; 

     //--Definition of input operator for WordInfo 
     istream & operator >>(istream &in, WordInfo &word) 
     { 
     word.readWords(in); 
     } 

     //--Definition of output operator 
     ostream & operator <<(ostream &out, WordInfo &word) 
     { 
      word.printWords(out); 
     } 

    int main() { 
     string wordFile; 
     cout<<"enter name of dictionary file: "; 
     getline (cin,wordFile); 

     ifstream inStream (wordFile.data()); 

     if(!inStream.is_open()) 
     { 
      cerr<<"cannot open "<<wordFile<<endl; 
      exit(1);      
     } 

     vector <WordInfo> wordVector; 
     WordInfo aword; 

     while (inStream >>aword && (!(aword=="synonyms"))) 
     { 
      wordVector.push_back(aword); 
     } 

     inStream.clear(); // clears failbit on the ifstream 

     int i=0;   
     while (i<wordVector.size()){ 
      cout<<wordVector[i]<<endl; 
      i++; 
     } 

     vector <int> intVector; 
     string synLine; //suspect 

     while (getline(inStream, synLine)&&(synLine!=("antonyms"))){ 
      aword.pushSynonyms(synLine, wordVector); 
     } 

     system("PAUSE"); 
     return 0; 
    } 

Répondre

4

Vous imprimez les groupes de deux ici:

cout<<synsAux.size(); 
+0

me tabassaient de 7 secondes. =) +1 –

+0

woops, si embarrassant..hehe – andandandand

Questions connexes