2011-09-03 7 views
4

텍스트 파일의 12 자리 숫자를 배열로 읽으려고합니다. 각 자리 사이에 공백을두면 성공적으로이 작업을 수행 할 수 있습니다. 예를 들면 : 나는 숫자 사이의 공백을 제거 할 때공백없이 텍스트 파일에서 번호 읽기

1 1 1 1 1 1 1 1 1 1 1 1 

는하지만 내 프로그램은 더 이상 텍스트 파일에서 배열을 할당 할 수 없습니다. 예를 들면 :

111111111111 

나는 대답은 간단하다 확신하지만 난 아무데도 내 정확한 문제에 대한 해결책을 찾을 수 없었습니다. 아래는 배열을 할당하는 데 사용하는 while 루프입니다.

void int_class::allocate_array(std::ifstream& in, const char* file) 
{ 
    //open file 
    in.open(file); 

    //read file in to array 
    int i = 0; 
    while(!in.eof()) 
    { 
     in >> myarray[i]; 
     i++; 
    } 

    in.close(); 
} 
+2

myarray의 유형은 무엇입니까? –

+0

char 배열 대신 std :: string을 읽으면 문자열이 읽은 데이터에 맞게 크기가 조정됩니다. –

답변

3

당신이 한 번에 입력 스트림에서의 전체를 읽을 수, 공백 또는 기타 구분이없는 가정하면, 문자의 배열을 읽으려면 :

in >> myarray; 

정수의 배열을 만들려면 당신이 문자로 입력 문자를 읽고 장소에 배열을 채울 수 :이 경우

char c; 
int i = 0; 
while(!in.eof()) 
{ 
    in >> c; 
    myarray[ i++ ] = c - '0'; 
} 

은 어떤 장소에서 공간의 양이있을 수있다, 그들은 무시됩니다.

+0

myarray는 int가 아닌 char 배열입니다. – user168715

+0

질문에서 명확하지 않지만 그렇습니다. –

+0

그래, 나는 그것이 OP의 게시 된 코드가 작동하지 않는 이유라고 가정하고있다. – user168715

관련 문제