通过Qt中的程序对文本文件进行排序
Posted
技术标签:
【中文标题】通过Qt中的程序对文本文件进行排序【英文标题】:Sorting in text file through program in Qt 【发布时间】:2014-03-10 18:19:57 【问题描述】:我正在使用 Qt5.2.1,我制作了一个程序,将一些值(如名称、编号、其他详细信息...)存储在一个文本文件中。我想按照名字来排列这些信息。
类似的东西。
一个
艾伦 24140239 some_other_info
艾薇儿 64376334 some_other_info
B
鲍勃 532523 some_other_info
等等
我该怎么做?我没有什么编程经验,所以请尽量保持简单:)
【问题讨论】:
问题是什么? 我该怎么做?我需要向正确的方向轻轻推动...逐步说明非常棒:D 我认为您需要提供更多详细信息。您的问题是如何对文本文件进行排序? 设置一个包含名称、编号和其他详细信息的结构。将单个元素放入这些元素的向量中。为该结构编写小于运算符并使用 std::sort。小于运算符应该对结构中的元素进行排序 @riklund 是的,这是我的问题,但它有点棘手(至少对我来说)我想要 Alphabets 下的排序元素(就像我在上面的问题中展示的那样) 【参考方案1】:这个例子又快又脏,但应该给你一个想法。 我使用了一个结构,因为默认情况下所有元素都是 C++ 公开的 我想 Qt 有一些方便的功能来完成这些工作。
#include <algorithm>
#include <iostream>
#include <vector>
#include <string>
struct my_data_t
std::string m_name;
int m_number;
// default constructor
my_data_t( std::string name="", int number = 0) :
m_name(name), m_number(number)
// less than operator
bool operator <(my_data_t b) const ;
;
// less than operator implementation ( I might have the const not quite right
// i struggle with const correctness.
bool my_data_t::operator<(my_data_t b) const
int32_t t = m_name.compare( b.m_name);
if( t > 0 )
return false;
else if( t < 0 )
return true;
else if( m_number > b.m_number )
return true;
// add other tests
// refer to std::sort
return false;
int main(int argc, char **argv )
std::vector<my_data_t> data;
my_data_t d3("Tom", 29) ;
my_data_t d4("Jill", 22);
data.push_back( my_data_t("Tom", 32) );
data.push_back( my_data_t("Jack", 31) );
data.push_back( d3 );
data.push_back( d4 );
std::cout << "Before sorting \n" << std::endl;
for( size_t i = 0; i < data.size(); ++i )
std::cout << "name, number:\t" <<
data[i].m_name <<
" " <<
data[i].m_number << std::endl;
std::cout << std::endl;
std::sort( data.begin(), data.end() );
std::cout << "After sorting \n" << std::endl;
for( size_t i = 0; i < data.size(); ++i )
std::cout << "name, number:\t" <<
data[i].m_name <<
" " <<
data[i].m_number << std::endl;
return 0;
cppreference std::sort
//用cygwin编译
$ g++ -o sort sort.cpp
// 运行示例 $ ./sort.exe
排序前
姓名、号码:汤姆 32 姓名、号码:杰克 31 姓名、号码:汤姆 29 姓名、编号:Jill 22
排序后
姓名、号码:Jack 31 姓名、编号:吉尔 22 姓名、编号:汤姆 32 姓名、号码:汤姆 29
【讨论】:
非常感谢...我现在有一个模糊的想法...让我试试这个。再次感谢。你是一个救生员:D以上是关于通过Qt中的程序对文本文件进行排序的主要内容,如果未能解决你的问题,请参考以下文章