다양한 문자가있는 사각형 형식의 텍스트 파일이 있습니다. 내가하고 싶은 것은 그 텍스트 파일을 그리드와 같은 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
}
충돌 코드입니다.
당신은으로 각 행을 삽입 할 문자열의 벡터를 사용할 수 있습니다
'그리드 [3 : 파일에 올바른 문자를 얻을 것이다
[x][y]
점에 액세스하여 지금] [2]'는 실제로 4를 반환해야합니다 (0부터 인덱스를 계산하기 시작한다고 가정). 권리? – 0x499602D2
예, 방금 0을 포함하는 것을 잊었습니다. 죄송합니다! – JC2112