C++第五次上机作业

C++第五次上机作业

 

#include < iostream >
#include
< sstream >
#include
< map >
#include
< string >
#include
< vector >
#include
< iomanip >
#include
< fstream >
using namespace std;
typedef map
<   string  , vector < int >   >  WORD;
void init ( WORD 
&  m )
{
 ifstream fin;
 fin.open(
" keywords.txt " );
    
string  keyword;
    
while  ( fin >> keyword )
        m[keyword];
 fin.close();
}
void count ( WORD 
&  m )
{
    
int  line = 0 ;
 ifstream fin;
 fin.open(
" text.txt " );
    
string  str;
    
while  ( getline(fin,str) )
    {
        stringstream SS(str);
        line
++ ;
        
while (SS >> str)
        {
            
if  ( m.find(str)! = m.end() )
                m[str].push_back (line);
        }
    }
 fin.close();
}
void output ( WORD m )
{
    
string  keyword;
    
for  ( WORD::iterator iter_map = m.begin() ; iter_map! = m.end() ; iter_map ++  )
    {
        cout
<< setw( 10 ) << iter_map -> first << " : "
            
<< " ( " ;
        
for  ( vector < int > ::iterator iter_vector = iter_map -> second .begin() ; iter_vector! = iter_map -> second .end(); iter_vector ++  )
        {
            
if  ( iter_vector! = iter_map -> second .begin() )
                cout
<< " , " ;
            cout
<<* iter_vector;
        }
        cout
<< " ) " << endl;
    }
}
int  main  ()
{
    WORD m;
    init(m);
    count(m);
    output(m);
}

你可能感兴趣的:(C++第五次上机作业)