C ++ indexiert nach Text



#include "stdafx.h"
#include <iostream>
#include <fstream> 
#include <set> 
#include <map> 
#include <string> 
#include <cctype> // isalpha, isupper, tolower 
#include <cstdlib> / / Ausgang 


verwenden Namensraum std; 


static int s_lineNum = 1; // static Zeilennummer  


int main (int argc, char * argv []) 

if (argc <3) 

cout << "Nutzung:" << argv [0] << "infile" << "outfile" << endl; 
cout << „eine Wortliste von einem Englishfile generieren“ 
<< „jedes Wort wird durch die Anzahl der Linien gefolgt, wo sie aufgetreten und Ausgang dann die resultto einer Datei.“ << endl; 

sonst 

//gebräuchliche Worte 
String commWord [13] = { "ein", "eine", "und", "sind", "in", "ist", "von",  
"Oder", "das", "die", "das", "auf", "haben"}; 


set <string> ignorieren (commWord, commWord + 13); // ignorieren die commonwords 
set <int> lineNum; 
String-Wort; // das Wort aus infile extrahiert enthalten 
Karte <string, set <int>> Wortliste; // assoziiertes Wort withlineNum 
pair <map <string, set <int>> :: iterator, bool> pr; 
map <string, set <int>> :: iterator itWord; 
set <int> :: iterator itLine; 


ifstream infile (argv [1]); // offene infile 
if (infile.bad ()) 

cout << "open "<< argv [1] <<" error" << endl; 
Ausfahrt (EXIT_FAILURE); 



ofstream outfile (argv [2]); 
if (outfile.bad ()) 

cout << "offen" << argv [2] << "Fehler" << endl; 
Ausfahrt (EXIT_FAILURE); 



char Temperatur; 
while (infile.good ()) 

temp = infile.get (); // ein Zeichen bekommen 
while (isalpha (temp)) 

if (isupper (temp)) 

temp = tolower (temp); 

word.append (1, temp); 
temp = infile.get (); // eine Newchar erhalten  

// nicht gebräuchliches Wort und nicht leer 
if (ignore.count (Wort) == 0 && word.size ()! = 0) 

lineNum.insert (s_lineNum); // Einsatz der Zeilennummer in lineNum wenn es neues Wort isa 
// ein Paar zurückgeben, die firstmember der Iterator ist, ist der zweite ein bool-Typ, die anzeigen, ob theinsertion erfolgreich ist oder nicht 
pr = wordlist.insert (pair <string, set <int>> (Wort, lineNum)); 
// die Karte bereits enthalten anelement deren Schlüssel hatte einen äquivalenten Wert in der Reihenfolge 
if (pr.second == false) 

wordlist [word] .Insert (s_lineNum); // Einsatz der Zeilennummer in den setContainer mit dem Wort gepaart 
}                

word.clear (); 
lineNum.clear (); 
if (Temp == '\ n') 

s_lineNum ++; 




// itWord Punkte Paar <string, set <int>>, die firstmember Wort ist, ist die zweite Zeile Nummer  
für (itWord = wordlist.begin ();! itWord = wordlist.end (); ++ itWord) 

// Set Ausgabeformat 
outfile.setf (ios_base :: links, ios_base :: adjustfield); 
outfile.fill ( '-'); 
outfile.width (34); 
outfile << itWord-> zuerst;
outfile << "„; 


für (itLine = itWord-> second.begin (); itLine = itWord-> second.end ();! ++ itLine) 

outfile << * itLine << ' ‚; 

outfile << endl; 



infile.close (); 
infile.open (argv [2]); 
cout << infile.rdbuf (); // streambuf, drucken Sie die Ausgabedatei 
infile.close (); 
outfile.close (); 

map <int, string> ss;
ss.insert (pair <int, string> (6, "aa"));
ss.insert (pair <int, string> (4, "zz"));
ss.insert (pair <int, string> (5, "gg"));
map <int, string> :: iterator pt;
für (pt = ss.begin (!), pt = ss.end (); ++ pt)
{
cout << pt-> second << endl;


}




// System ( "PAUSE"); 
return 0; 
}
Veröffentlicht 12 Original - Artikel · erntete Lob 6 · Ansichten 20000 +

Ich denke du magst

Origin blog.csdn.net/huaweizte123/article/details/51761261
Empfohlen
Rangfolge