2014-09-15 3 views
1

내가 같은 file.txt를이 값. 첫 번째 줄의 경우 x1 = 4, y1 = 3입니다. 두 번째 줄의 경우 x2 = 3, y2 = 2 등입니다. 이 메소드의 목적은 파일 내부의 4 좌표를 가져 와서 변수 또는 배열 내에 저장하는 것입니다. 가장 좋은 방법은 x에 대한 배열을 만들고 y에 대한 배열을 만드는 것이라고 생각했습니다. 따라서 coordX[]coordY[]이됩니다. 읽어야하는 파일에는 항상 4 개의 좌표 만 포함되므로 두 배열의 크기는 [3]입니다. 내가 지금 사용하고 코드는 이것이다 : 당신이 볼 수 있듯이읽기 파일 라인은

void readFile(){ 
    int x1, y1; 
    int coordX[3], coordY[3]; 
    while (infile >> x1 >> y1){ 
     //How to insert the coordinates into coordX[] and coordY[]? 
    } 
} 

, 나는 방법은 배열에 좌표 각각의 값을 삽입하는 방법을 모르고, 할 수있는 방법이있다 그것은 배열을 사용하고 있습니까? 또는변수 x1, y1, x2, y2 등을 만들어야합니까? 미리 감사드립니다! 최소한의 개조와

+0

당신은 쉼표로 구분 된 값 파일이 있습니다. "stackoverflow C++ read csv"를 검색하십시오. –

답변

2

..., 표준 : : 벡터를 사용한다 :

void readFile(){ 
    int coordX[4], coordY[4]; 
    infile >> coordX[0] >> coordY[0]; 
    infile >> coordX[1] >> coordY[1]; 
    infile >> coordX[2] >> coordY[2]; 
    infile >> coordX[3] >> coordY[3]; 
    ... 
} 

당신은 할 수 또한, 루프와 함께 할 : 네 개의 항목을 읽기 때문에 coordXcoordY 네,하지 세 가지 요소로 선언해야한다는

void readFile(){ 
    int coordX[4], coordY[4]; 
    for (int i = 0 ; i != 4 ; i++) { 
     infile >> coordX[i] >> coordY[i]; 
    } 
    ... 
} 

참고. 일반적인 규칙은 N 개의 배열을 선언 할 때 유효한 인덱스가 0에서 N-1 (포함)까지입니다.

coordXcoordYreadFile 함수에서 반환하기 위해 동일한 함수 내에서 사용하거나 컨테이너 또는 동적으로 할당 된 배열에 복사해야합니다. 읽을 항목의 수는 하지가 해결 된 경우

마지막으로, 당신은 결과의 변수 번호를 개최, 대신 배열의 vector 또는 list를 사용하는 코드를 변경해야합니다.

토큰 구분 기호로 쉼표를 삽입하려면 어떻게해야합니까?

당신은 this answer에 설명 된 것과 유사한 픽 - 앤 - 무시 코드를 추가 할 수 있습니다

void readFile(){ 
    int coordX[4], coordY[4]; 
    for (int i = 0 ; i != 4 ; i++) { 
     infile >> coordX[i]; 
     if (infile.peek() == ',') { 
      // If the next character is a comma, skip it 
      infile.ignore(); 
     } 
     infile >> coordY[i]; 
    } 
    ... 
} 
+0

해결책 주셔서 감사합니다 !! 토큰 구분 기호로 쉼표를 삽입하려면 어떻게해야할까요?코드가 쉼표로 구분되어 있지 않은 경우에만 코드가 작동합니다. '4 2' 값 사이에 쉼표가있는 경우 작동하지 않습니다 : '4, 3' 4 , 2' 이 방법이 있습니까? 감사! :) – user3651293

+0

정말 고마워요 !!! 귀하의 솔루션은 CSV를 읽는 것에 관한 게시물보다 훨씬 간단합니다. 감사합니다 !!!!!!!!!!!!! – user3651293

0

이 코드가 완전히 잘못 물론 원래의 코드

void readFile(){ 
    int x, y; 
    int i = 0; 
    int coordX[4], coordY[4]; 
    while (infile >> x >> y){ 
     //How to insert the coordinates into coordX[] and coordY[]? 
     coordx[i] = x; 
     coordy[i] = y; 
     i++; 
    } 
} 

를 예멘 아랍 공화국합니다. 파일에 5 줄이 포함되어 있으면 마지막 줄이 없다는 것을 알지 못합니다. 이처럼 읽을 네 번 반복하여 루프를 풀다 수, 좌표의 수는 네 가지로 고정되어있는 경우