写一个输入若干行每行若干个汉字,去除重复汉字后将剩下的逐个输出的c++代码
时间: 2024-03-18 15:40:54 浏览: 22
以下是一个实现上述功能的C++代码:
```
#include <iostream>
#include <unordered_set>
#include <string>
using namespace std;
int main() {
unordered_set<char> uniqueChars; // 用于存储已经出现过的汉字
string line;
while (getline(cin, line)) { // 逐行读入输入
for (char c : line) {
if (c >= 0x4E00 && c <= 0x9FFF) { // 判断是否为汉字
if (uniqueChars.find(c) == uniqueChars.end()) { // 判断是否已经出现过
uniqueChars.insert(c); // 如果没有出现过,加入到集合中
cout << c << endl; // 输出该汉字
}
}
}
}
return 0;
}
```
该程序使用了一个 `unordered_set` 来存储已经出现过的汉字,对于每一行输入的字符,如果是汉字且还没有出现过,则将其加入到集合中,并输出该汉字。这样可以保证输出的汉字没有重复。
相关问题
写一个输入若干行每行若干个汉字,去除重复汉字后将剩下的逐个输出的较为简单的c++代码
以下是一个简单的C++代码实现:
```
#include <iostream>
#include <unordered_set>
#include <string>
using namespace std;
int main() {
unordered_set<char> uniqueChars; // 用于存储已经出现过的汉字
char c;
while (cin >> c) { // 逐个读入输入
if (c >= 0x4E00 && c <= 0x9FFF) { // 判断是否为汉字
if (uniqueChars.find(c) == uniqueChars.end()) { // 判断是否已经出现过
uniqueChars.insert(c); // 如果没有出现过,加入到集合中
cout << c << endl; // 输出该汉字
}
}
}
return 0;
}
```
这个程序与前一个程序的主要区别在于,它是逐个读入输入字符的,而不是逐行读入。这样可以简化代码,但会降低效率。此外,该程序使用了 `cin` 来读取输入,因此需要在输入的最后加上 EOF(例如使用 Ctrl+Z)。
写一个输入未知行数每行若干个汉字的文本,去除重复汉字后将剩下的逐个输出的c++代码
可以使用 C++ 来实现这个功能。以下是一个示例代码:
```c++
#include <iostream>
#include <unordered_set>
#include <string>
using namespace std;
int main() {
unordered_set<char> unique_chars; // 定义一个集合用于存储出现过的汉字
// 循环读取每一行输入,并逐个处理其中的汉字
string line;
while (getline(cin, line)) {
for (auto c : line) {
if (isalpha(c) && isalnum(c)) { // 判断当前字符是否为汉字
if (unique_chars.find(c) == unique_chars.end()) { // 如果当前汉字没有出现过,则输出并加入集合
cout << c << endl;
unique_chars.insert(c);
}
}
}
}
return 0;
}
```
这个代码使用了 C++11 中的 `unordered_set` 来存储出现过的汉字,以达到去重的目的。对于每一行输入,它会遍历其中的每一个字符,并判断是否为汉字。如果是汉字且没有出现过,则输出并加入集合中。这样可以保证输出的汉字都是不重复的。