写一个输入若干行每行若干个英文单词然后去除重复后逐个输出的c++代码
时间: 2024-03-18 12:40:17 浏览: 74
以下是C++代码示例:
```c++
#include <iostream>
#include <string>
#include <unordered_set>
using namespace std;
int main() {
int n;
cin >> n;
unordered_set<string> unique_words;
string line;
getline(cin, line); // consume the newline character after reading n
for (int i = 0; i < n; i++) {
getline(cin, line);
string word;
for (int j = 0; j < line.length(); j++) {
if (line[j] == ' ') {
unique_words.insert(word);
word = "";
} else {
word += line[j];
}
}
unique_words.insert(word);
}
for (const auto& word : unique_words) {
cout << word << endl;
}
return 0;
}
```
代码执行时,会等待用户从键盘输入一个整数 `n`,表示接下来有 `n` 行包含若干个英文单词的文本。程序会将每行文本按照空格分隔成若干个单词,并去除重复后,逐个输出每个单词。输出结果的顺序是随机的,因为 `unordered_set` 是无序集合。
解释:我们首先使用 `cin` 读取一个整数 `n`,表示接下来有 `n` 行文本需要处理。然后,我们创建了一个名为 `unique_words` 的无序集合,用于存储文本中的唯一单词。接下来,我们使用 `for` 循环逐行读取文本。使用 `getline()` 函数从标准输入流(键盘)读取一行字符串,并将其存储到 `line` 中。然后,我们使用嵌套的 `for` 循环逐个读取 `line` 中的字符,如果是空格,则将当前单词插入到集合中,并将 `word` 重置为空字符串;否则,我们将当前字符添加到 `word` 中。最后,我们还需要插入最后一个单词,因为最后一个单词后面没有空格。最后,我们使用 `for` 循环逐个输出集合中的每个单词。
阅读全文