.. 아래 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
감사합니다! 설명을 위해
아직 알 수 있습니다. 'input.ignore (LARGE_NUM, ')')'또는 다음 분리 문자까지 읽을 때와 같이 무언가를 사용하는 대신 하드 코딩 된 숫자를 사용하는 이유는 무엇입니까? 당신의'operator >>'는 두 자리 숫자에 비참하게 실패 할 것입니다 ... – DevSolar
@DevSolar, 어떻게 2 자리 숫자로 작동하도록 유연하게 만드나요? – user1578897
문제가 논리적 인 부분으로 분해되는 것에 대해 * 프로그래밍 *에 관한 것이 아니라 설계 *에 관한 문제가 많습니다. 미안, 500 자로 된 SO 주석 상자에서 이것을 배울 수는 없습니다. 기본 아이디어는 '['~ ']'값 쌍을 얻은 다음 * 그 *를 구문 분석하는 것입니다. 완료되면 * other * 값 쌍을 가져 와서 * 그 *를 구문 분석하십시오. (어느 시점에서 두뇌의 일부분이 자동으로 위아래로 뛰어 오르고 "아! 오! 값 쌍을 읽으려면 코드를 다시 사용할 수 있습니다!") – DevSolar