2017-12-08 31 views
3

2つのintを含むタプルを含むベクトルを作成しようとしています。テキストファイルソースからintを取得しています。私が望むベクトルがあることを確認するために、私は内容を印刷しようとしていますが、出力は私に何も表示されていません。私はそれが私のコードのためであるかどうか、私はテキストファイルを置く場所がわからない。私はちょうどこの時点で立ち往生しています。何かが私にこれを助けることができれば、私は非常に感謝します。 タプルのベクトルを印刷するにはどうすればよいですか?

using namespace std; 


int main() 
{ 
ifstream file("source.txt"); 
typedef vector<tuple<int, int>> streets; 
streets t; 
int a, b; 

if (file.is_open()) 
{ 
    while (((file >> a).ignore() >> b).ignore()) 
    { 
     t.push_back(tuple<int, int>(a, b)); 
     for (streets::const_iterator i = t.begin();i != t.end();++i) 
     { 
      cout << get<0>(*i) << endl; 
      cout << get<1>(*i) << endl; 
     } 
     cout << get<0>(t[0]) << endl; 
     cout << get<1>(t[1]) << endl;     
    } 
} 

file.close(); 

system("pause"); 
return 0; 

おかげ

はここに私のテキストファイルだと、私はそれが enter image description here

Here's my output from debugging, if that's important

+1

一度それを1組を印刷します。あなたのループがうまくいかない理由をデバッガを使って示しましたか? –

+0

ファイルが正しく開封されているかどうか確認しましたか? 'file.is_open()'は 'true'を返しますか? – BobMorane

+0

出力ウィンドウに何が表示されますか?私はそれを見ましたが、私はそれをかなり理解していませんでした。あなたがそれを見たいのであれば、私はちょうどそれを私の質問に入れます。 – Damonlaws

答えて

0

あなたはループを使用する必要があります置く場所を、一度に一つのタプルを印刷すること。

コンプリート最小限例:

#include <iostream> 
#include <tuple> 
#include <vector> 
#include <fstream> 
using namespace std; 

int main(void) { 
    std::ifstream infile("source.txt"); 
    vector<tuple<int, int>> streets; 
    int a, b; 
    while (infile >> a >> b) 
    { 
     streets.push_back(tuple<int, int>(a, b)); 
    } 
    infile.close(); 
    for(auto& tuple: streets) { 
     cout << get<0>(tuple) << " " << get<1>(tuple) << endl; 
    } 
    return 0; 
} 

出力:

1 2 
3 4 
5 6 
7 8 
+0

いいね。整数をテキストファイルから取得したいのですが? – Damonlaws

+0

@Damonlawsはまったく異なる質問ですね。 – n0rd

+0

@Damonlaws n0rdは正しいですが、あなたがここで新しいので、質問を更新して質問に答えました。 *答えを受け入れることを忘れないでください。そして、一度に1つの質問をするという、n0rdの助言に従ってください。 – gsamaras

関連する問題