2017-04-08 11 views
0

6行の2行を別の行に表示しようとしました。私はさまざまな方法を試みましたが、どちらもうまくいかないようです。これは私が今のところ持っているものです:私は私の.txtでテキストファイルの列を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'; 
    } 
} 

コルフ[タブ] 5 * Gelina村ウォーターパーク[タブ] 2017年5月21日[タブ]ルートン[タブ] 10泊[タブ]オールインクルーシブ

オルギン[タブ] 5 *パラディススリオ・デ・オロ[タブ] 2017年5月22日[タブ]マンチェスター[タブ] 10泊[タブ]オールインクルーシブ

私は出力になりたい何

は次のとおりです。

コルフ

宿泊:5 * Gelina村ウォーターパーク

出発日:2017年5月21日

出発空港:ルートン

所要時間:10泊

ボードベース:オールインクルーシブ


オルギン

宿泊:5 *パラディススリオデOroStar

出発日:2017年5月22日

出発空港:マンチェスター

期間:10泊

ボードの基礎:オールインクルーシブ

+0

フィールドはどのようにテキストファイルに区切られていますか?コンピュータは「ウォーターパーク」がホテル名の一部であり、日付の一部ではないことを知っていると想定されていますか?たぶんあなたはCSV形式を見てみることができます、ちょうど例として、または多分それらをXMLで書くことができますか? –

+0

私はちょうど各値の間にタブを持っています。だから、私はこれらのタブを見つけて、それらの後の値を新しい行に移動するために、コンピュータのコードに追加する必要があります。ありがとう、私はそれを見てみましょう。 –

+0

http://stackoverflow.com/questions/11719538/how-to-use-stringstream-to-separate-comma-separated-stringsコンマの代わりに\ rを使用する以外は? –

答えて

0

あなたはそれがあなたのために働いていないと述べたが、私はちょうど私があなたの入力データを使用してリンクされているコードを試みたが、それはあなたが望むものをかなりのプリントアウト。私は、フィールド名を印刷しませんでしたが、ここにあなたの仕様に応じて解析された行である:ベクトルに結果をプッシュする些細な変更となり

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 

#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); 
} 

出力は、またはデータファイルはすでに正確な順序で正確なフィールドを持っていると仮定されているので、フィールドラベルと共にそれらを印刷してください。

+0

本当にありがとう、あなたの助けに!たぶんそれは私のために働いていない、私はテキストファイルからデータを取得しようとしているので、コードでそれを持っていない。 –

+0

いいえ、getlineはテキストファイルからこれらの正確な行を取得する必要があります。そうでない場合は、問題が悪いデータファイルである可能性があります。タブよりも見やすいものを使用した場合、データが正しいかどうかを確認する方が簡単かもしれません。 csvやxmlのような書式が一般的です。 –

関連する問題