2016-02-05 56 views
-2

我很困惑我们几天前在课堂上得到的新编程任务。它要求我们从包含未知数量的行和列的文件中读取信息,然后对数据进行排序。我的问题是我该怎么做?如何存储具有不同数量的列和行的表格? C++

我的推理是,如果我知道列数,我只需创建一个结构数组,然后为每一行创建一个新的结构。但是因为列的数量也是未知的,所以我不知道如何处理这个问题。

此外,我们只允许使用<iostream><fstream><cctype><vector>库。

+1

你试过了什么?发布一些你到目前为止的样本代码。还纠正了句子'另外,我们只允许使用和库',因为它不清楚你想说什么或限制的实际内容。 – Dave

+0

如果您要“对数据进行排序”,您计划的是哪种排序......每一行的数字,但是如何对行进行排序?也许所有行中的所有数字都进入单一向量 - 简单的排序,但增加?减少?这个专栏的想法是简单地混淆你(和我们)?也许他要求你定义你对问题的解释(然后做),或者希望你与他/她(或他的TA)联系以获得完成作业所需的信息。 –

+0

对不起。我试图在小于和大于符号之间列出库,但显然它们是不允许的。我想说的是我们只能使用iostream,fstream,vector和cctype。至于排序,我只需要按递增/递减顺序排序。表中的数据将是int,double和string类型。 – alexspace38

回答

0

你可以使用一个

std::vector<std::vector<WhateverTypeYouWantToStore>> 
0

使用std :: vector的。您可以创建一个二维矢量就像这样:

vector<vector<string> > table; 

然后从文件中读取行,并把数据转换成一个维向量(vector<string> line)。然后,你可以的push_back行向量到表中,这样的:

table.push_back(line); 

你可以看到这个网页上有关向量的更多信息:cplusplus.com

0

我希望你必须知道的数据是什么格式,你将从文本文件的行和列中读取。首先要明白,你会读第一行,然后是第二行等等。如果您不知道数据的类型,那么请将它全部视为字符串。所以,你可以假定你在哪里罚款空字符'\ 0',那么你正在寻找第一行的数据,所以继续阅读字符一个字符寻找下一个'\ 0'。然后无论你发现'\ n'这将是第一行的最后一点,你刚刚发现最后一列。在'\ n'之后,您将开始阅读第二排等。有了这个,你可以确定有多少行和列。你继续阅读文本文件,直到你到达EOF。 见附图。 Text File Format 另外,定义一个指向字符类型的指针并使用realloc为其分配内存。随着realloc()的增加,你可以找到更多的数据。请通过realloc()手册进行参考。

相关问题