2016-09-21 2 views
-2

배열 3 행을 3 값으로 읽으 려합니다. 내 매트릭스 등 등에 넣어 3 개 값을 ... 복구 그래서배열을 한 줄씩 3 개 값으로 3 값으로

for(int i=0; i<_height; i++) { 
    for(int j=0; j<_width; j++) { 
     result = ifile.get(); 
     (image)[i][j]= (int)result; 
     // Display the array which contains data 
     cout << (image)[i][j] << " "; 
    } 
    cout << endl; 
} 
+0

그리고 질문은 실제로입니까? –

+0

파일에 텍스트 형식의 값이 포함되어 있으면'ifile >> result;'를 사용할 수 있습니다. –

+0

어떻게 3 행씩 3 개의 값으로 검색 할 수 있습니까? – Rayan958

답변

1

이 시도 :

for (unsigned int row = 0; row < 3; ++row) 
{ 
    for (unsigned int column = 0; column < 3; ++column) 
    { 
     inFile >> image[row][column]; 
    } 
} 

당신의 값이 공백, 탭 또는 줄 바꿈은 "공백"으로 구분되어 있기 때문에 , 모든 값이 한 줄 또는 여러 줄에 관계없이 작동해야합니다.

편집 1 : 안전한 대안
는 위가 항상 9 개 값이며, 그들은 모두 유효한 정수 가정합니다. 무엇인가가 잘못되면 위의 내용이 작동하지 않습니다. 다음은보다 강력한 방법입니다.

unsigned int row = 0; 
unsigned int column = 0; 
bool all_values_read = false; 
int value = 0; 
while ((inFile >> value) && !all_values_read) 
{ 
    image[row][column] = value; 
    ++column; 
    if (column >= 3) 
    { 
     column = 0; 
     ++row; 
     if (row >= 3) 
     { 
     all_values_read = true; 
     } 
    } 
} 
0

다음과 같이 당신이 뭔가를 구현할 수 다음 get(int i, int j) 기능 (또는 라인이 j+3 전에 끝나는 경우 이하)의 위치 j에서 시작하는 세 개의 값을 복구하는 기능이

int count = 0; 
for(int i=0; i<_height; i++) { 
    for(int j=0; j<_width; j = j +3) { 
     result = ifile.get(i,j); 
     (image)[i][count]= (int)result; 
     count += 1; 
     // Display the array which contains data 
     cout << (image)[i][count] << " "; 
    } 
    count = 0; 
    cout << endl; 
} 

i-th

+0

물론 필요한 모든 검사를 제공해야합니다. 첨부 된 코드는 단지 아이디어 일뿐입니다! – acornagl

+0

아니오 카운트 ++ please? – Rayan958

+0

자유롭게 편집 할 수 있습니다;) – acornagl

관련 문제