C++는

2012-11-15 3 views
0
내가 마음에 가지고 여기에 물어하려고 할 몇 가지 문제가 발생했습니다

.. 아래 C++는

이 내 텍스트 파일

하는 연산자 오버로드

ifstream& operator>>(ifstream &input, Map2D &map2d) 
{ 
    int x1,x2,y1,y2; 

    //get x1 first 
    input.ignore(2); 
    input>>x1; 

    //get y1 
    input.ignore(); 
    input>>y1; 

    //get x2 
    input.ignore(4); 
    input>>x2; 

    //get y2 
    input.ignore(); 
    input>>y2; 
    input.ignore(); 
} 

입니다

Map2D, [5, 7], [3, 8] 

마음 속에있는 질문은 x2가 쉼표 인 이유는 x2가 ignore (4)이고 ignore (2)가 아니기 때문에 무시하려고합니다 (2)와 그림이 엉망입니다. 하지만 왜이다 (4) 올바른 1.

입니다 무시 A (4) 때 프로그래머 공백 만하고 [

x2 refer to value 3 

감사합니다! 설명을 위해

+0

아직 알 수 있습니다. 'input.ignore (LARGE_NUM, ')')'또는 다음 분리 문자까지 읽을 때와 같이 무언가를 사용하는 대신 하드 코딩 된 숫자를 사용하는 이유는 무엇입니까? 당신의'operator >>'는 두 자리 숫자에 비참하게 실패 할 것입니다 ... – DevSolar

+0

@DevSolar, 어떻게 2 자리 숫자로 작동하도록 유연하게 만드나요? – user1578897

+1

문제가 논리적 인 부분으로 분해되는 것에 대해 * 프로그래밍 *에 관한 것이 아니라 설계 *에 관한 문제가 많습니다. 미안, 500 자로 된 SO 주석 상자에서 이것을 배울 수는 없습니다. 기본 아이디어는 '['~ ']'값 쌍을 얻은 다음 * 그 *를 구문 분석하는 것입니다. 완료되면 * other * 값 쌍을 가져 와서 * 그 *를 구문 분석하십시오. (어느 시점에서 두뇌의 일부분이 자동으로 위아래로 뛰어 오르고 "아! 오! 값 쌍을 읽으려면 코드를 다시 사용할 수 있습니다!") – DevSolar

답변

0

4 개의 다른 문자 인 "], [" "를 건너 뜁니다.

y1을 읽을 때 여전히 스트림에서 y1의 위치에 있습니다. 이 위치는 닫는 괄호 "]"의 끝 앞에 있고 쉼표, 공백 및 다음 괄호 "["를 읽어야합니다.

+0

그러나 구분 기호 쉼표로 구분하면 시작해야합니다. 공백에서 [ – user1578897

+0

글쎄 아직 그 구분 문자에 도달하지 않았습니다. 당신은 여전히 ​​대괄호 뒤에 있습니다. 그리고 나는 완전히 틀릴 수도 있습니다.하지만 그것은 그 물줄기가 그 성격을 뛰어 넘지 않을 것이라는 것을 의미합니다. DevSolar는 맞습니다. 그러나 그가 나열한 방식으로 무시해야합니다. –