2011-04-27 3 views
1

차원에 관계없이 모든 ASCII 파일을 문자열로 변환하는 간단한 방법을 찾았지만 동적 할당 된 2D 배열에서 필요하기 때문에이 점이 많이 도움이되지 않습니까? 미로를 해결하기 위해 나중에 Graph 속성으로 변환 할 속성. 내 문자열에서 동적으로 할당 된 2D 배열을 얻는 가장 좋은 방법은 무엇입니까? 아니면 내 접근 방식이 미로가있는 ASCII 텍스트 파일 중에서 가장 좋은 방법이 아닌 경우 어떻게해야합니까? 2 차원 배열의 공백을 꼭지점으로 변환하고 시작 및 끝점이있는 모서리와 연결할 수 있기를 원합니다.미로 ASCII 텍스트 파일에서 동적으로 할당 된 2D 배열을 어떻게 만들 수 있습니까?

std::ifstream in("d:\\mazes\\mymaze.txt"); 
std::string s((std::istreambuf_iterator<char>(in)), 
std::istreambuf_iterator<char>()); 
cout << s; 
+0

데이터의 어떤 종류의 파일에 있나요? 그냥 번호? – rzetterberg

+0

줄 단위로 입력하거나 항목별로 입력하는 대신 모든 줄을 한 번에 메모리에 보관해야합니까? 나는 그래프 객체를 만들고 한 번에 하나의 엔트리를 읽는 것보다 ('skip' /'skipws'를 신중하게 사용하여'>>'연산자를 사용하여 while 루프에서) 그래프에 추가하십시오. –

+0

이제 전체 배열을 문자열 배열로 만든 다음 : "s"그래프로 변환하는 방법을 궁금합니다. 정말 그것을 먼저 2 차원 배열 또는 인접 행렬로 변환해야합니까? 대/소문자 스위치를 만들 필요가 있습니다 : #, p, t 및 기본값은 공백이됩니까? 어떤 아이디어 .. 내 질문에 분명하다면 몰라요 ... 당신이 나를 이해할 수 없다면 명확히 해달라고 부탁드립니다 – user478984

답변

0

이 작동합니다 :

int rows = 4;//When you change these the array will change size 
int cols = 4; 

// declaration 
int ** a; 

// allocate 
a = new int*[rows]; 
for(int i = 0; i < rows; i++) 
    a[i] = new int[cols]; 

// set the values 
for(int j = 0; j < rows; j++) 
    for(int i = 0; i < rows; i++) 
     a[i][j] = 0; 

// destruct 
for(int i = 0; i < rows; i++) 
    delete a[i]; 
delete a[]; 
관련 문제