#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <set>
#include <map>
#include <string>
#include <CCTYPE> // isalpha, isupper, tolower
#include <cstdlib> / / saída
usando namespace std;
static int s_lineNum = 1; // estática linenumber
int principal (int argc, char * argv [])
{
se (argc <3)
{
cout << "uso:" << argv [0] << "infile" << "outfile" << endl;
cout << "gerar uma lista de palavras a partir de um Englishfile"
<< "cada palavra é seguido pelo número de linhas onde ocorreram e, em seguida, a saída do resultto um arquivo." << endl;
}
outro
{
//palavras comuns
cadeia commWord [13] = { "um", "uma", "e", "são", "no", "é", "de",
"Ou", "que", "a", "este", "a", "ter"};
set <string> ignorar (commWord, commWord + 13); // ignorar os commonwords
definir <int> lineNum;
palavra string; // conter a palavra extraído de infile
Map <String, conjunto <int>> lista de palavras; // withlineNum palavra associado
par <map <string, conjunto <int>> :: iterator, bool> pr;
Map <String, definir <int>> :: iterator itWord;
definir <int> :: iterator itLine;
ifstream infile (argv [1]); // infile aberto
se (infile.bad ())
{
cout << "aberto "<< argv [1] <<" erro" << endl;
saída (EXIT_FAILURE);
}
ofstream arquivo_de_saída (argv [2]);
se (outfile.bad ())
{
cout << "aberto" << argv [2] << "erro" << endl;
saída (EXIT_FAILURE);
}
Temp carvão animal;
enquanto (infile.good ())
{
temp = infile.get (); // obter um char
enquanto (isalpha (temp))
{
se (isupper (temp))
{
temp = tolower (temp);
}
word.append (1, TEMP);
temp = infile.get (); // obter um newchar
}
// Não palavra comum e não vazia
if (ignore.count (palavra) == 0 && word.size ()! = 0)
{
lineNum.insert (s_lineNum); // inserir o número da linha em lineNum se isa nova palavra
// retorna um par, o firstmember é o iterador, o segundo é um tipo bool que indica se theinsertion é bem sucedida ou não
pr = wordlist.insert (par <string, conjunto <int>> (word, lineNum));
// o mapa anelement já continha cuja chave tinha um valor equivalente na ordenação
if (pr.second == false)
{
lista de palavras [palavra] .Colocar (s_lineNum); // inserir o número da linha dentro do setcontainer emparelhado com a palavra
}
}
word.clear ();
lineNum.clear ();
se (temperatura == '\ n')
{
s_lineNum ++;
}
}
// itWord pontos a par <string, conjunto <int>>, o firstmember é a palavra, o segundo é o número da linha
for (itWord = wordlist.begin (!); itWord = wordlist.end (); ++ itWord)
{
formato de saída set //
outfile.setf (ios_base :: esquerda, ios_base :: adjustfield);
outfile.fill ( '-');
outfile.width (34);
outfile << itWord-> em primeiro lugar;
outfile << " ";
for (itLine = itWord-> second.begin (); itLine = itWord-> second.end (!); ++ itLine)
{
outfile << * itLine << ' ';
}
outfile << endl;
}
infile.close ();
infile.open (argv [2]);
cout << infile.rdbuf (); // streambuf, imprima o arquivo de saída
infile.close ();
outfile.close ();
}
Map <int, string> ss;
ss.insert (par <int, string> (6, "aa"));
ss.insert (par <int, string> (4, "zz"));
ss.insert (par <int, string> (5, "gg"));
Map <int, string> :: iterator pt;
for (pt = ss.begin (!); pt = ss.end (); ++ pt)
{
cout << PT-> segunda << endl;
}
// system ( "pausa");
return 0;
}