所以,我的工作主要在这里完成,但我似乎无法弄清楚如何按照文本文件显示的顺序排列单词。它只是从文本文件中获取单词,并按字母顺序排列单词。文本文件位于此页面的底部。
文本文件分析
编写一个程序,读取两个文本文件的内容,并按以下方式进行比较:
• 它应该显示两个文件中包含的所有唯一词的列表。• 它应该显示出现在两个文件中的单词列表。• 它应该显示出现在第一个文件中的单词列表,而不是第二个文件。• 它应该显示出现在第二个文件中的单词列表,而不是第一个文件。• 它应该显示出现在第一个或第二个文件中的单词列表,但不能同时出现在这两个文件中。
提示:使用集合操作来执行这些分析。此外,有关字符串标记化的讨论,请参见第 10 章。
这是我到目前为止所拥有的:
#include <iostream>
#include <set>
#include <string>
#include <fstream>
#include <algorithm>
#include <vector>
#include <cstdlib>
#include <ctime>
using namespace std;
void displaySet(set<string>);
void displayDifference(set<string>, set<string>);
int main()
{
ifstream inputFile;
string name;
const int MIN_VALUE = 1;
const int MAX_VALUE = 2;
int numbers;
unsigned seed = time(0);
srand(seed);
set<string> firstFileWords;
set<string> secondFileWords;
inputFile.open("firstTextFile.txt");
cout << "Reading data from the first file.\n";
cout << endl;
while (inputFile >> name)
{
firstFileWords.insert(name);
}
displaySet(firstFileWords);
inputFile.close();
inputFile.open("secondTextFile.txt");
cout << endl;
cout << "Reading data from the second file.\n";
while (inputFile >> name)
{
secondFileWords.insert(name);
}
cout << endl;
displaySet(secondFileWords);
cout << endl;
cout << "The differences between the two files:\n";
cout << endl;
displayDifference(firstFileWords, secondFileWords);
displayDifference(secondFileWords, firstFileWords);
cout << endl;
numbers = rand() % 2 + 1;
if(numbers = 2)
{
displaySet(secondFileWords);
cout << "\nThe Second File Words";
}
else
{
displaySet(firstFileWords);
cout << "\nThe First File Words";
}
return 0;
}
void displaySet(set<string> s)
{
for (auto element : s)
{
cout << element << " ";
cout << endl;
}
}
void displayDifference(set<string> set1, set<string> set2)
{
vector<string> result(set1.size() + set2.size());
auto iter = set_difference(set1.begin(), set1.end(),
set2.begin(), set2.end(),
result.begin());
result.resize(iter - result.begin());
for (auto element : result)
{
cout << element << " ";
}
}
这些是我提到的文本文件中的文字:
//firstTextFile.txt
它应该显示两个文件中包含的所有唯一单词的列表。它应该显示出现在两个文件中的单词列表。它应该显示出现在第一个文件中的单词列表,而不是第二个文件。它应该显示出现在第一个或第二个文件中的单词列表,但不能同时出现在这两个文件中。
//secondTextFile.txt
它应该显示两个文件中包含的所有唯一单词的列表。它应该显示出现在两个文件中的单词列表。它应该显示出现在第二个文件中的单词列表,但不是第一个文件。它应该显示出现在第一个或第二个文件中的单词列表,但不能同时出现在这两个文件中。
它们之间的区别是第三句话。