#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;
}