2017-04-08 20 views
0

我一直試圖在不同的行上顯示具有6列的2行。我嘗試了不同的方法,其中沒有一個似乎能夠工作。這就是我現在:使用C++中的向量在新行上顯示文本文件的列

void Travel::LoadDest() 
{ 

    ifstream file("worlddeals.txt"); 
    vector<vector<string>>data; 

    if (file) { 
     string line; 
     while (getline(file, line)) { 
      data.push_back(vector<string>()); 

      stringstream split(line); 
      string value; 

      while (split >> value) 
       data.back().push_back(value); 
     } 
    } 
    for (int i = 0; i < data.size(); i++) { 
     for (int j = 0; j < data[i].size(); j++) 
      cout << data[i][j] << endl; 

     cout << '\n'; 
    } 
} 

在我的.txt我:

孚[Tab]鍵5 * Gelina村水上樂園[TAB] 2017年5月21日[Tab]鍵盧頓[Tab]鍵10晚[Tab]鍵全部 包

奧爾金[Tab]鍵5 * Paradisus里約熱內盧德奧羅[TAB] 2017年[Tab]鍵曼徹斯特[Tab]鍵10晚[Tab]鍵全部 包

5月22日

我所要的輸出是什麼:

住宿:5 * Gelina村水上樂園

出發日期:2017年5月21日

出發機場:盧頓

持續時間:10晚

理事會依據:全包


奧爾金

住宿:5 * Paradisus里約熱內盧OroStar

出發日期:曼徹斯特

時間:10夜2017年

出發機場5月22日

董事會依據:全包

+0

您的字段在文本文件中如何分隔?計算機是否應該知道「水上樂園」是酒店名稱的一部分,而不是日期的一部分?也許你可以查看CSV格式,只是作爲一個例子,或者也許用xml編寫它們? –

+0

我只在每個值之間有選項卡。因此,也許我需要添加到計算機的代碼來查找這些選項卡,並將它們之後的值移動到新行。謝謝,我會看看它。 –

+0

http://stackoverflow.com/questions/11719538/how-to-use-stringstream-to-separate-comma-separated-strings除了用\ r而不是逗號? –

回答

0

你說這不工作了你,但我只是去嘗試代碼我使用的輸入數據聯繫在一起的,它打印出來幾乎你想要什麼。我沒有打印字段名稱,但這裏是按照您的規範分析的行:

#include <iostream> 
#include <sstream> 

void print_tab_delimited_fields(const std::string &input) 
{ 
    std::istringstream ss(input); 
    std::string token; 
    while (std::getline(ss, token, '\t')) { 
     std::cout << token << '\n'; 
    } 
} 

int main() 
{ 
    std::string line1 = "Corfu\t5 * Gelina Village Waterpark\t21 May 2017\tLuton\t10 nights\tAll Inclusive"; 
    print_tab_delimited_fields(line1); 

    std::string line2 = "Holguin\t5 * Paradisus Rio De Oro\t22 May 2017\tManchester\t10 nights\tAll Inclusive"; 
    print_tab_delimited_fields(line2); 
} 

輸出

Corfu 
5 * Gelina Village Waterpark 
21 May 2017 
Luton 
10 nights 
All Inclusive 
Holguin 
5 * Paradisus Rio De Oro 
22 May 2017 
Manchester 
10 nights 
All Inclusive 

這將是推動的結果,載體的瑣碎的變化,或只需將它們與字段標籤一起打印出來,因爲數據文件已被假定爲具有精確順序的確切字段。

+0

非常感謝您的幫助,夥計!也許它不適合我,因爲我試圖從文本文件中獲取數據,而不是在代碼中。 –

+0

不,getline應該從文本文件中獲取確切的行。如果不是,那麼你的問題可能是一個不好的數據文件。如果您使用的是比選項卡更可見的數據,驗證數據是否正確可能更容易。像csv或xml這樣的格式在這裏很常見。 –

相關問題