2016-02-05 26 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()手冊進行參考。

相關問題