C ++ indexados de acordo com texto



#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; 
}
Publicado 12 artigos originais · ganhou elogios 6 · vê 20000 +

Acho que você gosta

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