나는 다음과 같습니다 텍스트 파일에서 데이터를로드하려고 :쉼표로 구분 된 텍스트 파일에서 2D 배열로 데이터로드?
161,77,88,255 0,44,33,11,111
등 내가 그것을 조작하는 기능을 가지고 있고, 보장하고 배열이 올바른 크기인지 (여전히 다를 수 있음) 다른 사람이있을 수 있지만 나는 내 오류의 원인이 될 믿기 때문에
bool loadData(int **imgPix, string fileName) {
ifstream inputFile;
inputFile.open(fileName.c_str());
string tempLineRow; //The resulting line from the text file
string tempElementColumn; //The individual integer element
int numberOfCols = 0;
int numberOfRows = 0;
if (!inputFile.is_open()) {
return false;
}
imgPix = new int* [numberOfRows];
while (getline(inputFile, tempLineRow, '\n')) {
stringstream ss;
ss << tempLineRow; //Stringstream version of the line
while (getline(ss, tempElementColumn, ',')) {
stringstream ss2;
ss2 << tempElementColumn;
ss2 >> numberOfCols;
//Prob? (**imgPix) = *(*(imgPix + numberOfRows) + numberOfCols);
numberOfCols++;
}
numberOfRows++;
}
inputFile.close();
return true;
} 내가 코멘트와 이중 포인터 할당과 선을 표시 한
: 아래 구현에서 내 시도이다 . while 루프 구조를 사용하여 반복적으로 2D 배열을 업데이트하는 방법을 잘 모르겠습니다.
누구에게 도움을 줄 수 있습니까? 대단히 감사하겠습니다!
100 % 정확하지만 중요한 점은 "하나는 사전에 치수를 알아야합니다"라는 것이므로이 접근법은 막 다른 길로 인도합니다. std :: vector를 사용하면 OP를 처리하기가 훨씬 쉬워집니다. –
예,'std :: vector'를 사용하는 것이 더 쉽고 우아합니다. 글쎄,'벡터'의'벡터'는 오버 헤드를 생각 합니다만, 아마도 성능은 여기 중요하지 않습니다. 어쨌든, 그는 미리 배열의 적어도 하나 (내부) 차원을 알아야합니다. – Inspired