Qt 实现 IP 地址排序

对一个保存 IP 地址的 txt 文件进行排序,保存成新的 txt 文件。

参考:

IP地址排序、IP区段去重 - CSDN博客
https://blog.csdn.net/whz_zb/article/details/7409320

lastb.txt

36.2.209.189
113.108.44.11
113.172.123.18
41.236.206.196
171.228.163.78
177.125.22.129
86.57.137.167
14.191.233.250
14.169.216.75
111.40.119.29
36.110.10.178
177.125.21.200
14.207.171.207
186.101.208.89
113.161.61.8
113.174.40.131
200.34.232.202
180.183.247.237
186.67.220.29
111.85.220.242
14.169.221.117
181.39.198.40
190.214.218.22
197.50.81.77
184.82.192.118
197.251.179.206
124.232.146.42

main.cpp

#include "mainwindow.h"
#include <QApplication>
#include <QFile>
#include <QTextStream>
#include <QTextCodec>

bool compare(const int &num1, const int &num2)
{
    if (num1 < num2)
    {
        return true;
    }

    return false;
}

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    QFile file("lastb.txt");
    file.open(QIODevice::ReadOnly | QIODevice::Text);

    QStringList ips;
    QTextStream in(&file);
    while (!in.atEnd())
    {
        QString line = in.readLine();
        ips << line;
    }

    QList<int> first;
    QList<int> second;
    QList<int> third;
    QList<int> fourth;

    foreach (QString str, ips)
    {
        QStringList ip = str.split(".");
        int num1 = ip[0].toInt();
        int num2 = ip[1].toInt();
        int num3 = ip[2].toInt();
        int num4 = ip[3].toInt();

        if (!first.contains(num1))
        {
            first.append(num1);
        }

        if (!second.contains(num2))
        {
            second.append(num2);
        }

        if (!third.contains(num3))
        {
            third.append(num3);
        }

        if (!fourth.contains(num4))
        {
            fourth.append(num4);
        }
    }

    bool compare(const int &num1, const int &num2);
    qSort(first.begin(), first.end(), compare);
    qSort(second.begin(), second.end(), compare);
    qSort(third.begin(), third.end(), compare);
    qSort(fourth.begin(), fourth.end(), compare);

    QStringList ret;
    for (int index = 0; index < first.length(); ++index)
    {
        for (int index2 = 0; index2 < second.length(); ++index2)
        {
            for (int index3 = 0; index3 < third.length(); ++index3)
            {
                for (int index4 = 0; index4 < fourth.length(); ++index4)
                {
                    QString ip = QStringLiteral("%1.%2.%3.%4").arg(first[index]).arg(second[index2]).arg(third[index3]).arg(fourth[index4]);
                    if (ips.contains(ip))
                    {
                        ret << ip;
                    }
                }
            }
        }
    }

    QFile file2("lastb_sorted.txt");
    file2.open(QIODevice::WriteOnly | QIODevice::Text);

    QTextStream out(&file2);
    out.setCodec(QTextCodec::codecForName("UTF-8"));
    foreach (QString str, ret)
    {
        out << str << endl;
    }

    return a.exec();
}

lastb_sorted.txt

14.169.216.75
14.169.221.117
14.191.233.250
14.207.171.207
36.2.209.189
36.110.10.178
41.236.206.196
86.57.137.167
111.40.119.29
111.85.220.242
113.108.44.11
113.161.61.8
113.172.123.18
113.174.40.131
124.232.146.42
171.228.163.78
177.125.21.200
177.125.22.129
180.183.247.237
181.39.198.40
184.82.192.118
186.67.220.29
186.101.208.89
190.214.218.22
197.50.81.77
197.251.179.206
200.34.232.202

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Qt是一种跨平台的应用程序开发框架,可以用于开发各种类型的应用程序,包括客户端应用程序。要通过Qt客户端访问后台数据库,需要以下步骤: 1. 安装并配置Qt库:在开始之前,需要先下载并安装Qt开发环境,并在项目中配置Qt库。 2. 连接数据库:使用Qt提供的数据库模块,可以连接到后台数据库。首先,需要确定所使用的数据库类型(例如MySQL、SQLite、PostgreSQL等),然后在Qt代码中添加相应的驱动程序。 3. 进行数据库操作:一旦连接成功,就可以进行各种数据库操作,比如查询、插入、更新、删除等。可以使用Qt提供的SQL语句来执行这些操作,也可以使用ORM(对象-关系映射)框架来简化操作。 4. 处理返回结果:在执行数据库查询时,会返回相应的结果集。可以使用Qt提供的API来处理返回的结果,比如遍历结果集、获取特定字段的值等。 5. 关闭数据库连接:在完成数据库操作后,应记得关闭数据库连接,以释放资源并保证数据的完整性。 总结起来,通过Qt客户端访问后台数据库需要安装配置Qt库,连接数据库,进行数据库操作,处理返回结果,并关闭数据库连接。Qt提供了丰富的功能和工具来简化这些操作,使得开发人员可以更加方便地与后台数据库进行交互。 ### 回答2: Qt 是一个跨平台的开发框架,可以用来开发客户端应用程序。对于一个客户端应用程序来说,它通常需要与服务端进行通信,并且访问后台数据库来获取或更新数据。 在使用 Qt 开发客户端应用程序时,可以通过网络协议与服务端进行通信。Qt 提供了多种网络操作类,如 QTcpSocket 和 QNetworkAccessManager,可以使用这些类来建立与服务端的连接,并发送或接收数据。通过与服务端建立的连接,客户端可以将需要查询或更新的数据发送到服务端,并且接收服务端返回的结果。 在服务端,可以使用各种后台数据库来存储和管理数据。常见的后台数据库系统有 MySQL、Oracle、SQL Server 等。客户端可以通过发送 SQL 查询语句到服务端,来获取需要的数据。服务端接收到查询请求后,可以执行相应的 SQL 查询操作,并将查询结果返回给客户端。 客户端在接收到服务端返回的数据后,可以对数据进行解析和处理,然后在界面上展示给用户。客户端还可以对获取到的数据进行处理、过滤、排序等操作,以符合用户需求。 总之,Qt 客户端通过与服务端建立的连接,可以访问后台数据库,获取或更新数据。这种方式使得客户端应用程序能够与服务端进行灵活的通信,可以实现各种功能和业务需求。 ### 回答3: Qt是一个跨平台的应用程序开发框架,旨在帮助开发者轻松构建功能丰富、高性能的应用程序。Qt框架提供了一套完整的工具和库,以便开发者可以快速开发各种类型的应用程序,包括客户端应用程序。 当一个Qt客户端应用程序需要访问后台数据库时,通常会通过服务端来实现数据访问。这样做的好处是保护了数据库的安全性,因为客户端无法直接访问数据库,只能通过服务端来进行数据的读写操作。 在这种情况下,服务端扮演了一个中间层的角色。它负责接收来自Qt客户端的请求,并将其转发到后台数据库进行处理。服务端会进行数据的验证、授权等操作,以确保客户端只能访问其被允许的数据,并对于敏感数据进行保护。 Qt客户端和服务端之间通常会通过网络协议进行通信,例如HTTP、TCP/IP等。客户端通过发送请求的方式向服务端获取或提交数据,并按照服务端返回的数据进行相应的处理。这样可以实现客户端与数据库的解耦,允许服务端对数据库进行进一步的封装和优化,以提升整体的性能和安全性。 实现Qt客户端通过服务端访问后台数据库的具体步骤如下: 1. 在Qt客户端中,使用Qt提供的网络模块,建立与服务端的连接。 2. 构建请求数据的格式和内容,并发送到服务端。 3. 服务端接收并解析请求,并调用相应的数据库操作方法来处理请求,例如查询、插入、更新等。 4. 服务端将结果封装成响应数据的格式,发送给客户端。 5. 客户端接收到服务端返回的数据,并根据数据的类型和结构进行处理,例如显示在界面上、保存到本地等。 通过这种方式,Qt客户端可以方便地与服务端进行通信,同时也实现了对数据库的访问。这种架构可以提高应用程序的性能、安全性和拓展性,使得开发者可以更好地管理和处理数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值