C ++ indexado de acuerdo con el texto



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


using namespace std; 


static int s_lineNum = 1; // estática LineNumber  


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

si (argc <3) 

cout << "uso:" << argv [0] << "infile" << "archivosalida" << endl; 
tribunal << "generar una lista de palabras a partir de un Englishfile" 
<< "cada palabra es seguida por el número de las líneas en las que esto ocurriera y luego la salida resultto un archivo." << endl; 

más 

//Palabras comunes 
cadena commWord [13] = { "un", "una", "y", "son", "en", "es", "de",  
"O", "que", "la", "este", "a", "tener"}; 


conjunto <cadena> ignorar (commWord, commWord + 13); // ignorar las commonwords 
set <int> lineNum; 
cadena de palabras; // contener la palabra extraída de archivoentrada 
mapa <cadena, juego <int>> lista de palabras; // asociado palabra withlineNum 
par <mapa <cadena, juego <int>> :: iterador, bool> PR; 
mapa <cadena, ajuste <int>> :: iterador itWord; 
set <int> :: iterador itLine; 


ifstream infile (argv [1]); // infile abierto 
si (infile.bad ()) 

cout << "abierto "<< argv [1] <<" error" << endl; 
salida (EXIT_FAILURE); 



ofstream archivosalida (argv [2]); 
si (outfile.bad ()) 

cout << "abierto" << argv [2] << "error" << endl; 
salida (EXIT_FAILURE); 



temp Char; 
while (infile.good ()) 

temp = infile.get (); // obtener un char 
while (isalpha (temp)) 

si (isupper (temp)) 

temp = tolower (temp); 

word.append (1, temp); 
temp = infile.get (); // obtener un Newchar  

// No palabra común y no está vacío 
si (ignore.count (palabra) == 0 && word.size ()! = 0) 

lineNum.insert (s_lineNum); // inserto el número de línea en lineNum si isa nueva palabra 
// devolver un par, el firstmember es el iterador, el segundo es un tipo bool que indica si theinsertion tiene éxito o no 
pr = wordlist.insert (par <cadena, conjunto <int>> (palabra, lineNum)); 
// el mapa anelement ya contenidos cuya llave tenía un valor equivalente en el ordenamiento 
si (pr.second == false) 

Lista de palabras [palabra] .Insert (s_lineNum); // inserto el número de línea en el setContainer emparejado con la palabra 
}                

word.clear (); 
lineNum.clear (); 
si (temp == '\ n') 

s_lineNum ++; 




// itWord puntos a par <cadena, conjunto <int>>, la firstmember es palabra, el segundo es el número de línea  
para (itWord = wordlist.begin ();! itWord = wordlist.end (); itWord ++) 

formato de salida conjunto // 
outfile.setf (ios_base :: izquierda, ios_base :: adjustfield); 
outfile.fill ( '-'); 
outfile.width (34); 
archivo_salida << itWord-> primero;
archivo_salida << " "; 


para (itLine = itWord-> second.begin (); itLine = itWord-> second.end ();! ++ itLine) 

archivo_salida << * itLine << ' '; 

archivo_salida << endl; 



infile.close (); 
infile.open (argv [2]); 
tribunal << infile.rdbuf (); // streambuf, imprimir el archivo de salida 
infile.close (); 
outfile.close (); 

mapa <int, string> ss;
ss.insert (par <int, string> (6, "aa"));
ss.insert (par <int, string> (4, "zz"));
ss.insert (par <int, string> (5, "gg"));
mapa <int, string> :: iterador pt;
para (pt = ss.begin ();! pt = ss.end (); ++ pt)
{
tribunal << pt-> segunda << endl;


}




// sistema ( "pausa"); 
return 0; 
}
Publicado 12 artículos originales · ganado elogios 6 · Vistas a 20000 +

Supongo que te gusta

Origin blog.csdn.net/huaweizte123/article/details/51761261
Recomendado
Clasificación