2017-12-08 27 views
3

그래서 두 개의 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

당신은 하나의 튜플 한 번에 그것을 인쇄 할 수 있습니다. 디버거를 사용하여 루프가 작동하지 않는 이유를 보여 줍니까? –

+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는 맞습니다.하지만 여기 새로 왔기 때문에 질문을 업데이트하고 질문에 대답했습니다. * 대답을 수락하고 n0rd의 조언에 따라 한 번에 한 가지 질문 만하는 것을 잊지 마십시오. – gsamaras