注意混合输入时要去掉换行符,否则,输入n后缓冲区残余的'\n'会被getline读入造成错误
// #include <iostream>
// #include <vector>
// #include <algorithm>
// #include <string>
// using namespace std;
// // 自定义排序函数:按字符串长度排序
// bool compareByLength(const string &a, const string &b) {
// return a.size() < b.size();
// }
// int main() {
// int n;
// while (cin >> n) { // 每次循环读取n,直到EOF
// cin.ignore(); // 清除输入缓冲区中的换行符
// vector<string> strings; // 存储字符串的动态容器
// for (int i = 0; i < n; ++i) {
// string str;
// getline(cin, str); // 读取一行字符串
// if (str == "stop") {
// break; // 如果遇到 "stop",提前结束输入
// }
// else {
// strings.push_back(str); // 将字符串添加到容器
// }
// }
// // 按长度排序字符串
// sort(strings.begin(), strings.end(), compareByLength);
// // 输出排序后的字符串
// for (const auto &str : strings) {
// cout << str << endl;
// }
// }
// return 0;
// }
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main() {
int n;
string s;
map<int, string> count;
while (cin >> n) {
cin.ignore(); // 忽略n后面的换行符
for (int i = 0; i < n; i++) {
getline(cin, s);
int size = s.size();
if (s == "stop") {
break;
}
count[size] = s;
}
// 输出结果
for (auto it = count.begin(); it != count.end(); it++) {
cout << it->second << endl;
}
count.clear(); // 为下一组数据做准别
}
return 0;
}

京公网安备 11010502036488号