这道题可以map存储字符串,当然使用set更好,因为可以在加入集合时直接进行排序(当然,这道题比较简单,如果是自定义的数据可以重载运算符)。如果使用map就需要另外使用qsort对字符串进行排序。
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <string.h>
#include <sstream>
#include <set>
using namespace std;
const int maxn = 6000;
char line[maxn];
char temp[300];
int wordsNum = 0;
set<string> wordsSet;
int main()
{
freopen("in.txt", "r", stdin);
freopen("out.txt", "w", stdout);
while (gets(line))
{
for (int i = 0; i < strlen(line); i++)
{
if (isalpha(line[i]))
line[i] = tolower(line[i]);
else
line[i] = ' ';
}
stringstream ss(line);
while (ss >> temp)
{
string str(temp);
if (!wordsSet.count(temp))
wordsSet.insert(str);
}
}//while gets
for (set<string>::iterator it = wordsSet.begin(); it != wordsSet.end(); it++)
cout << *it << endl;
return 0;
}