#include "stdafx.hを"
の#include <iostreamの>
の#include <fstreamの>
の#include <設定>
書式#include <マップ>
書式#include <文字列>
の#include <CCTYPE> //はisalpha、isupper、TOLOWER
の#include <cstdlib> / /退出
名前空間stdを使用。
静的INT s_lineNum = 1; //静的行番号
int型のmain(int型ARGC、CHAR * ARGV [])
{
IF(ARGC <3)
{
COUT << "使用:" <<のargv [0] << "INFILE" << "OUTFILE" << ENDL。
裁判所未満<<「Englishfileから単語リストを生成します」
<<「各単語は、それが発生した行の数と、出力resulttoファイルが続きます。」<<てendl;
}
そうしないと
{
//一般的な単語
ストリングcommWord [13] = { ""、 ""、 "および"、 "ある"、 "である" "で"、 "の"、
「または」、「その」、「」、「この」、「から」}「持っています」。
セット<ストリング>無視する(commWord、+ 13 commWord); // commonwordsを無視
<整数> LINENUM設定します。
文字列の単語; // INFILEから抽出された単語を含みます
マップ<文字列、セット<整数>>ワードリスト; //准ワードwithlineNum
ペア<マップ<文字列、セット<整数>> ::イテレータ、ブール値> PR。
マップ<文字列、セット<整数>> ::イテレータitWord。
<整数> ::イテレータitLine設定します。
INFILEはifstream(ARGV [1]); //オープンINFILE
もし(infile.bad())
{
COUT << "オープン "<<のargv [1] <<" エラー" << ENDL。
出口(EXIT_FAILURE)。
}
OUTFILE ofstreamの(ARGV [2])。
もし(outfile.bad())
{
COUT << "オープン" <<のargv [2] << "エラー" << ENDL。
出口(EXIT_FAILURE)。
}
char型の温度;
しばらく(infile.good())
{
TEMP = infile.get(); //は、charを取得します
しばらく(isalphaは(一時))
{
もし(isupper(TEMP))
{
TEMP = TOLOWER(TEMP)。
}
word.append(1、TEMP)。
TEMP = infile.get(); //はすべてnewCharを取得します
}
//ではない一般的な単語や空ではありません
(ignore.count(ワード)== 0 && word.size()!= 0)の場合
{
lineNum.insert(s_lineNum); //それは新しい単語をISA場合LINENUMに行番号を挿入
// firstmemberイテレータであり、ペアを返し、第二はtheinsertionが成功したか否かを示すブール型であります
PR = wordlist.insert(対<文字列、セット<整数>>(単語、LINENUM))。
//そのキーの順序で同等の価値を持っていたマップすでに含まれているanelement
もし(pr.second == false)を
{
単語リスト[単語] .insert(s_lineNum); //ワードとペアsetcontainerに行番号を挿入
}
}
word.clear();
lineNum.clear();
もし(一時== '\ n' は)
{
s_lineNum ++;
}
}
// itWord点対<文字列、セット<整数>>、firstmemberは単語であり、第二は、ある行番号
用(itWord = wordlist.begin();!itWord = wordlist.end(); ++ itWord)
{
//設定された出力フォーマット
outfile.setf(ios_base ::左、ios_base :: adjustfield)。
outfile.fill( ' - ');
outfile.width(34)。
OUTFILE << itWord->まず、
OUTFILE << "「;
用(itLine = itWord-> second.begin(); itLine = itWord-> second.end();!++ itLine)
{
OUTFILE << * itLine << '「;
}
OUTFILE <<てendl;
}
infile.close();
infile.open(ARGV [2])。
coutの<< infile.rdbuf(); //ストリームバッファ、出力ファイルを印刷
infile.close();
outfile.close();
}
マップ<整数、文字列> SS。
ss.insert(対<整数、文字列>(6、 "AA"));
ss.insert(対<整数、文字列>(4 "ZZ"));
ss.insert(対<整数、文字列>(5、 "GG"))。
マップ<整数、文字列> ::イテレータPT。
用(PT = ss.begin();!PT = ss.end(); ++ PT)
{
coutの<< PT->二<<てendl;
}
//システム(「休止」)。
0を返します。
}