在 C++ 中对命令行参数进行排序

2024-04-14

我想对命令行参数数组进行排序。所有参数都是整数。 这是我的代码,但它不起作用。

#include <iostream>
using namespace std;

int main (int argc, char *argv[]) {
    for (int i=0; i<argc-1; ++i) {
        int pos = i;
        for (int j=i+1; j<argc; ++j) {
            if (argv[j] - '0' < argv[pos] - '0') {
                pos = j;
            }
        }
        char *tempt = argv[i];
        argv[i] = argv[pos];
        argv[pos] = tempt;
    }
    for (int i=0; i<argc; ++i) {
        cout << argv[i] <<endl;
    }
}

编译后,当我调用./a.out 4 3 2 1,它仍然打印4 3 2 1到屏幕而不是1 2 3 4。 怎么了?

提前致谢。


Try std::sort from <algorithm>使用自定义比较器

std::sort(argv, argv + argc, [](char * const & a, char * const & b) {
    return atoi(a) < atoi(b);
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 C++ 中对命令行参数进行排序 的相关文章

随机推荐