【问题标题】:Read a text file, store it, and sort this data in ascending order读取文本文件,存储它,然后按升序排序这些数据
【发布时间】:2013-05-29 23:43:25
【问题描述】:

正如您从标题中所理解的那样,我在这个编程环境中确实是一个新手。 我想向您寻求帮助:我需要读取如下文件:

11:02,11:06
15:45,16:05
...

这些数据是一个在另一个之上。所以我们有 11 列(11 个字符加上换行符)和 239 行。 在原始文件中,它们都是随机排序的。我应该按升序对它们进行排序。 最后,可视化输出当然会很好。 到目前为止,我已经完成了第一步,我正在读取文件“char by char”。但我不能再继续下去了;我的知识不允许我这样做。如果有人可以帮助我,我会非常高兴。我真的很需要这些东西。

【问题讨论】:

  • 什么是“新月顺序”?
  • 一步一步接近它 - 首先逐行读取 csv google.com.au/… 并将其存储在向量中。无论您找到什么教程,排序都很好地涵盖了,所以应该不是问题。
  • 真的很抱歉,我的意思是升序。是txt文件,有什么变化吗?
  • 欢迎来到 StackOverflow。我们无法真正帮助“这是对我的需求的非常模糊的描述。我无法真正解释它,而且我没有代码来显示我正在尝试做什么。你能帮帮我吗?”问题。我们只能帮助解决未来可能对他人有所帮助的具体问题;恐怕我们无法根据需求列表来协助个别项目或任务。 faqtour 页面可以帮助您解决我们可以帮助回答的问题类型。恐怕我必须投票结束这不是一个真正的问题。祝你好运。 :-)
  • 嗯,很抱歉,但我认为问题很明确,我想阅读、存储然后对文件进行排序。按升序排列。

标签: c++ file sorting


【解决方案1】:

这是一个 Perl 的数据生成器脚本;它在每一行生成 2 次,第二次总是比第一次晚:

#!/usr/bin/env perl
use strict;
use warnings;

foreach my $i (1..239)
{
    my $h1 = 10 + rand 8;
    my $h2 = $h1 + 1;
    my $m1 = rand 60;
    my $m2 = rand 60;
    printf "%.2d:%.2d,%.2d:%.2d\n", $h1, $m1, $h2, $m2;
}

这是一个适度冗长的 C++ 程序,它对 Perl 生成的数据文件进行排序,其方式与 Unix sort 程序相同。

#include <string>
#include <iostream>
#include <vector>
#include <algorithm>

int main()
{
    std::vector<std::string> input;
    std::string line;

    while (std::getline(std::cin, line))
        input.push_back(line);

    std::sort(input.begin(), input.end());

    //C++03
    //for (std::vector<std::string>::iterator it = input.begin(); it != input.end(); ++it)
    //    std::cout << *it << std::endl;

    //C++11
    for (auto &it : input)
        std::cout << it << std::endl;
}

可能有压缩 C++ 的方法,但它适用于我(Mac OS X 10.8.3 上的 G++ 4.7.1):

    g++ -O3 -g -std=c++11 -Wall -Wextra rs.cpp -o rs

肯定有办法压缩 Perl 代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-04
    • 2021-09-21
    • 2015-10-27
    相关资源
    最近更新 更多