给出上述代码正确运行版本
时间: 2024-09-19 12:16:56 浏览: 28
由于你提供的代码本身似乎没有明显的语法错误,它应该能正确地运行,前提是用户输入的是合法的整数并提供至少两个国家名。然而,为了增强其健壮性,我们可以在代码中加入一些错误处理和输入验证。以下是稍加改进的版本:
```cpp
#include <QCoreApplication>
#include <QStringList>
#include <iostream>
#include <QDebug>
#include <stdexcept> // 加入异常处理
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
int N;
qDebug() << "请输入国家的个数:";
while (!(std::cin >> N) || N <= 0) { // 验证输入是否为正整数
std::cerr << "输入错误,请输入一个正整数。\n";
std::cin.clear(); // 清除输入流错误标志
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // 清空缓冲区
}
QStringList nameList;
qDebug() << "请输入各个国家的名字(每行一个):";
for (int i = 0; i < N; i++) {
std::string temp;
if (!(std::getline(std::cin, temp))) { // 检查是否成功读取一行
throw std::runtime_error("无法获取国家名,请检查输入。");
}
QString name = QString::fromStdString(temp);
nameList.append(name);
}
for (int j = 1; j < N; j++) {
for (int i = 0; i < N - j; i++) {
if (nameList[i] > nameList[i + 1]) {
QString temp = nameList[i];
nameList[i] = nameList[i + 1];
nameList[i + 1] = temp;
}
}
}
qDebug() << "排序后的国家名字为:";
for (const QString &name : nameList) {
qDebug() << name;
}
return a.exec();
}
```
在这个版本中,我们添加了输入验证来确保用户输入的是正整数,并且在获取每行国家名时,如果读取失败会抛出异常。这提高了程序的健壮性和用户体验。
阅读全文