gpt4 book ai didi

c++ - 排序和写入文件日期

转载 作者:行者123 更新时间:2023-11-27 23:09:53 26 4
gpt4 key购买 nike

#include <iostream>     // std::cout
#include <cstdlib>
#include <climits>
#include <algorithm>
#include <cmath>
#include <fstream>

using namespace std;

struct student{
int ID; // ID
string firstname; // first name
string lastname; // last name
int date; // YYMMDD

static bool sort_date(student a, student b){
long data1;
long data2;
data1 = a.date;
data2 = b.date;
if(data1 < 150000){
data1 += 20000000;
}
else{
data2 += 19000000;
}
if(data2 < 150000){
data2 += 20000000;
}
else{
data1 += 19000000;
}
return data1 < data2;
}

};

bool is_num(const string &s);
void input_year(student &students);
int length_of_int(int x);

int main(){

student students[5];

students[0].date = 000101;
students[1].date = 951230;
students[2].date = 570509;
students[3].date = 120915;
students[4].date = 020324;

stable_sort(students, students + 5, student::sort_date);

ofstream file;
file.open("sort_date.txt");
for(int i = 0; i < 5; i++){
file << students[i].date << endl;
}

return 0;
}

void input_year(student &students){
while(true){
string input;
cin >> input;
if(is_num(input)){
students.date = atoi(input.c_str());
if(length_of_int(students.date) != 6){
cout << "Error, try again." << endl;
}
else{
//
break;
}
}
else{
cout << "Error, try again." << endl;
}
}
}

bool is_num(const string &s){
string::const_iterator it = s.begin();
while(it != s.end() && isdigit(*it)){
++it;
}
return !s.empty() && it == s.end();
}

int length_of_int(int input){
int length = 0;
while(input > 0){
length++;
input /= 10;
}
return length;
}

这是我上面的代码,我不确定还能做什么来对日期进行排序。我已经为此工作了一段时间,但无法正确处理。我需要帮助,最好是能解决我问题的代码。

基本上,日期的类型是“YYMMDD”,所以在 sort_date 函数中,我将这些整数制作成“YYYYMMDD”格式,然后对它们进行排序,然后再次变成 YYMMDD。然而,排序有点不对。我试了几次,当在文件中写一个像“010101”这样的日期时,它删除了第一个“0”,所以我正在寻求这两个问题的帮助。感谢您的帮助。

最佳答案

如果前导 0 很重要,那么您就没有 int ,而是一个 string .您可以检查是否 string s 使用 < 排序尽你所能int

另请查看您的 if-else 以添加 19 或 20;您检查数据 1,然后修改数据 2(反之亦然)...

关于c++ - 排序和写入文件日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20955189/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com