2013-11-24 2 views
0

다양한 문자가있는 사각형 형식의 텍스트 파일이 있습니다. 내가하고 싶은 것은 그 텍스트 파일을 그리드와 같은 2 차원 배열로 읽는 것입니다. I 그리드 전화 인 경우 예를 들어, 텍스트 파일이텍스트 파일을 문자 단위로 배열 파일로 읽어 들일 수 있습니까?

15681 
28515 
32414 
12451 

같은 것이었다 [3] [2], [X] 및 [Y]는 각각 파라미터, 그리드의 값 [3] [2] 열 (3)에서 발견되는 5, 칼럼 것 I 원래 문자 배열로 그리드를 선언하여 이렇게 시도 2.

I은 ​​x의 값을 결정 하였다

array[x][y] 

및 y (파일에 몇 줄이 있는지, 파일에 몇 개의 열이 있었는지), 파일에 몇 줄이 있는지 읽고 얼마나 많은 문자가 있는지 줄에 있었다. 내 코드가 불필요한 것으로 알고 있으며 벡터 배열을 구현하여 작업량을 줄일 수는 있지만 어떻게해야하는지 잘 모르겠습니다.

int x = 0; int y = 0; 
grid[x][y] = whatever the current character in the file is; 
every time a character is stored, x++ 
when a newline is encountered, y++; 

는 그게 제대로 그리드에 모든 값을 절약 할 생각하지만, 나는 그 작업을 수행하는 방법에 대한 구문을 모른다.

내가 생각한 또 다른 아이디어는 X 값과 Y 값이 포함될 클래스의 배열을 가질 수 있다고 생각했지만 실제로 어떻게 구현할 지 전혀 알 수 없습니다.

첫 번째 옵션 구문을 현명하게 수행하는 방법에 대해 알지 못하고 두 번째 옵션부터 시작하는 방법에 대한 단서가 없습니다. 누구든지 나에게 힌트를 주거나 나를 가르치는 데 도움이 될만한 정보로 리디렉션 할 수 있습니까?

편집 : 실행시 프로그램이

grid[2][1] = 4; 
grid[2][1] = "4"; 
grid[2] = 4; 
grid[2] = "4"; 

프로그램 빌드하지만, 충돌 충돌 어디 다음 코드를 일을 해봤

#include <iostream> 
#include <fstream> 
#include <stdlib.h> 
#include <string> 
#include <vector> 
using namespace std; 
std::vector<std::string> grid; 
std::string line; 
int main(int argc, char** argv) 
{ 
std::string current_exec_name = argv[0]; 
std::string filename; 
if (argc > 1){ 
    filename = argv[1]; 
} 
cout << filename; 
ifstream infile(filename.c_str()); 
while (infile.good()) 
{ 
    grid.push_back(line); 
} 
grid[2][1] = 4; 
//the line above 

} 

충돌 코드입니다.

당신은으로 각 행을 삽입 할 문자열의 벡터를 사용할 수 있습니다
+0

'그리드 [3 : 파일에 올바른 문자를 얻을 것이다 [x][y] 점에 액세스하여 지금

std::vector<std::string> grid; std::string line; while (std::getline(in, line)) { grid.push_back(line); } 

] [2]'는 실제로 4를 반환해야합니다 (0부터 인덱스를 계산하기 시작한다고 가정). 권리? – 0x499602D2

+0

예, 방금 0을 포함하는 것을 잊었습니다. 죄송합니다! – JC2112

답변

3

:

grid[3][2]; // 4 
+0

이것은 훌륭하게 작동하는 것처럼 보입니다! 고마워, 배트맨. – JC2112

+0

사실, 위의 코드를 구현 한 후 테스트를 시도하고 그리드를 선언하고 [3] [2] = 4, 그 다음에 구 [3] [4]를 선언하지만 프로그램이 충돌합니다. 그것은 올바르게 구축되지만 충돌합니다. 네가 준 코드의 첫 번째 줄인 다른 격자 선언을해야만 했니? – JC2112

+0

@JoJoBya 충돌하는 실제 코드를 보여 주시겠습니까? 아마 내가 도울 수있어. – 0x499602D2

관련 문제