2011-08-30 2 views
-1

임의의 파일을 원시 바이너리로 읽은 다음 데이터를 별도의 텍스트 파일로 출력하려고합니다. 형식화 또는 인코딩과 관련하여 입력 파일에 대해 어떠한 가정도 할 수 없습니다. 내가 무슨 짓을했는지은 (매우) 대략입니다 :(C++) arbirtrary 파일을 이진 파일로 읽고 별도의 텍스트 파일로 데이터를 출력하십시오.

char *pDataBlock = new char[nLength]; 
ifstream InputFile("MyInputFile.txt", ios::in | ios::binary); 
ofstream OutputFile("MyOutputFile.txt"); 
while (InputFile) 
{ 
    InputFile.read(pDataBlock, nLength); 
    OutputFile.write(pDataBlock, nLength); 
} 

현재 문제 : 이 코드는 바이너리 모드로 MyInputFile.txt을 열리지 만 pDataBlock라는 C-문자열로 한 번에 하나 개의 문자 (바이트!)를 읽고 . 이 C- 문자열은 한 번에 한 바이트 씩 MyOutputFile.txt에 기록됩니다.

나쁜 해결책 : 나는 이제 위의 코드에 다음 단계를 삽입해야합니다. (1) InputFile의 단일 문자 읽기, (2)이 문자를 정수로 변환, (3) convert (4)이 바이너리 문자열을 추가 모드에서 OutputFile에 출력하고, (5) EOF까지 다음 문자를 읽습니다.

문제는 fstream과 관련된 모든 읽기/쓰기 명령은 한 번에 한 바이트 씩 가져 오는 것과 비트 수준 조작을 허용하지 않는 것 같습니다.

+0

무엇을하려하십니까? 파일의 복사본을 만드시겠습니까? – balki

+1

나는이 질문의 요점을 모두 알지 못한다. 한 파일의 내용을 다른 파일로 복사하기를 원하십니까? –

+1

-1은 목적을 잊어 버리고 질문을 포기하는 것을 잊었습니다. 이미 시도한 것의 설명이 혼란스럽고 잘못된 어설 션이 있습니다. –

답변

0

당신이 맞습니다. 스트림은 1 바이트보다 작은 입도로 운영자가 할 수 없습니다. 지금 당장 가지고있는 해결책은 그렇게 나쁘지 않습니다. 한 번에 두 개 이상의 바이트를 읽음으로써 향상시킬 수 있지만 파일 스트림에서 한 번에 한 비트 씩 읽을 수있는 방법은 없습니다.

관련 문제