按字母顺序排序字符串数组

Alphabetical string arrays sorting

本文关键字:字符串 数组 排序 顺序      更新时间:2023-10-16

我以前发过,得到了一些很有帮助的回复。我需要读取人的信息(如ID,年龄等)从文本文件到不同的数组。唱片是这样的2012317109 Jamie Carles Smith男65(不同的信息位以TAB分隔,行以换行结束)

然而,关于ID号,我被告知使用提取操作符(<<)来获取ID号作为整数而不是字符串。

然后我必须按字母字符串顺序对这些记录进行排序,然后将它们放入输出文件中。

到目前为止,我有以下内容。我该怎么做?我不打算使用映射或向量,我需要使用数组。

#include <iostream>
#include <fstream>
using namespace std;
void  selection_sort( double x[],  int  length)
{   
    int  i,  j,  k;
    double  t;
    for  (i=0;  i<length-1;  ++i)  {        
        k = i;       //find next smallest elm, x[k]
        for  (j=i+1;  j< length;  ++j)
            if  (x[k] > x[j])  k = j;
        //swap x[i] with x[k] 
        t = x[i];   x[i] = x[k];  x[k] = t;   
    }
}

int main () {
    ifstream fin;
    ofstream fout;
    fin.open("input.txt");
    fout.open("output.txt");
    if (fin.fail()) {
        cout << "Fail to open inout.txt" << endl;
        exit(1);
    }
    struct row{string ID, name, rest;};
    int x; 
    fout << x << endl;
    row *rows=new row[x];
    for (int i=0; i<x; ++i) {
        getline (fin, rows[i].ID,   't'); // ID
        getline (fin, rows[i].name, 't'); // name
        getline (fin, rows[i].rest      ); 
    }
    selection_sort (row[], x); 
//complier error this line: expected primary expression before [ token.
}

最简单的方法可能是使用std::sort(来自标头<algorithm>),并定义一个

bool operator<(row const& lhs, row const& rhs)
{
    // delegates to operator< for std::string
    return lhs.name < rhs.name;
}
,然后调用STL算法

// uses the above defined operator< for row objects
std::sort(rows, rows + x);

,然后写出排序后的输出