我一直在努力编写一个可以解决特定问题的程序,我已经多年没使用c ++了,这让我很难及时完成程序。 我有以下文本数据:
10929 12490 1023 12 29 10 92 96 100 10
10929 12290 1023 10 29 10 95 90 90 10
10929 12190 1023 12 29 10 93 91 80 12
10929 12590 1023 10 29 10 97 90 70 10
10929 12490 1023 12 29 10 92 96 100 11
10929 12290 1023 10 29 10 95 90 90 10
10929 12190 1023 12 29 10 93 91 80 10
10929 12590 1023 10 29 10 97 90 70 10
我需要对数据进行排序,以便新文件将所有100个文件组合在一起,结果是90年代,80年代和70年代相同(注意右边的第二列)。
到目前为止我的主要问题是将每一行保存到一个字符串数组中以便于排序,我想到的形式是:array [line_data,line_number]
对此问题的任何帮助将不胜感激,谢谢您的时间
答案 0 :(得分:0)
样品
struct tagITEM {char* szLine; int iSort;}ITEM, *pITEM;
std::list<ITEM> lItems;
inline bool lt_ItemCmp(ITEM& c1, ITEM& c2) { return c1.iLine < c2.iLine; }
std::stable_sort(lItems.begin(), lItems.end(), lt_ItemCmp);
请注意,上面的代码未经过测试
答案 1 :(得分:0)
如果你只想将数据存储在像“array [line_data,line_number]”这样的数组中,你可以这样做:
所以,如果您使用名为“file”的std :: ifstream和名为storage的容器,那么读取将如下所示:
std::string str;
std::list<std::string> storage;
//or std::vector<std::string>, depends on how much you have to read in
while(std::getline(file,str))
{
storage.push_back(str);
}
这样,存储[0]将成为文本文件的第一行。