Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[6491] 안녕하세요 생초보가 넘 어려워서 이렇게 올립니다.
초보자 [huss5210] 3575 읽음    2010-01-23 14:15
안녕하세요

std::ifstream Fileio;
Fileio.open("Analysis.pdf",ios::in|ios::binary|ios::ate);
ofstream out("test.pdf",ios::out|ios::binary|ios::trunc);
ofstream outlog("test.log",ios::out|ios::binary|ios::trunc);

vector vecitemp;


int tempCount = 1;
int tempsize = 10000; //기본 블록 단위 크기
int templen = 0;
long tempcout;
long Nowcout=0;
long randnum = 0;
bool CheckRandValue = true;

Fileio.clear();
Fileio.seekg(0,ios::end); //커서 끝자리
tempcout = Fileio.tellg(); //총사이즈
Fileio.seekg(0,ios::beg); //다시 처음으로 커서 이동


templen = tempcout /tempsize;
char *tempchar = new char[tempsize];



//파일 사이즈
cout << "file size : " << tempcout << endl;
//파일 배분 사이즈
cout << "file len count : " << templen << endl;

tempCount = 1;


while( tempCount <=templen)
{
Fileio.read(tempchar,tempsize);
vecitemp.push_back(tempchar);
// out.write(tempchar,tempsize);

Nowcout = tempsize*tempCount;
tempCount++;
}

int sumcount = tempcout - Nowcout;

if(sumcount != 0)
{
Fileio.read(tempchar,sumcount);
vecitemp.push_back(tempchar);
//out.write(tempchar,sumcount);
}
std::copy(vecitemp.begin(), vecitemp.end(), ostream_iterator(out, ""));
cout << "ok" << endl;

out.flush();
out.close();

Fileio.close();

이렇게 처리 했을경우
char로 하면 해당 파일이 정상적으로 저장이 되는데..
string으로 했을경우 파일 용량이 축소 되어서 저장됩니다.ㅜㅜ;;

원본 파일 크기 104KB
저장했을경우에는 14kb 왜 이런 현상이 일어나는지 개념 자체가 없습니다.

너무 개념 없다 생각하신다면 사과드립니다.
밑에 처럼도 수정을 해봤는데..

int ssxxx =0;
int sxf=0;
int tkc=0;

char rbuf[256] = {0x00, };

while( tempCount <=templen)
{
Fileio.seekg(Nowcout,ios::beg);
Fileio.read(tempchar,tempsize);

cout << "tempchar :" << strlen(tempchar) << endl;
cout << "tempsize :" << tempsize << endl;
cout << "Nowcout :" << Nowcout << endl;

ssxxx = tempsize - strlen(tempchar);

if (ssxxx != 0)
{
sxf = 0;
while( sxf < ssxxx)
{
strcat(tempchar,rbuf);
sxf++;
}
}
cout << "new tempchar :" << strlen(tempchar) << endl;
vecitemp.push_back(tempchar);

Nowcout = tempsize*tempCount;
tempCount++;
}

int sumcount = tempcout - Nowcout;

if(sumcount != 0)
{
cout << "Nowcout + sumcount :" << Nowcout+sumcount << endl;
Fileio.seekg(Nowcout,ios::beg);

Fileio.read(tempchar,sumcount);

vecitemp.push_back(tempchar);
//out.write(tempchar,sumcount);
}

사이즈를 짤라서 하고 싶어서 저렇게 했는데... ;;; 저것을 수정해서 하려면 어떻게 해야 할까요?

+ -

관련 글 리스트
6491 안녕하세요 생초보가 넘 어려워서 이렇게 올립니다. 초보자 3575 2010/01/23
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.