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

C++빌더 Q&A
C++Builder Programming Q&A
[25926] Re:[질문] 텍스트 파일 라인 단위 입출력(?)
김백일.cedar [cedar] 3753 읽음    2003-06-13 13:57
초보 님이 쓰신 글 :
: 안녕하세요?
: 궁금한게 있어서 이렇게 글을 올립니다.
:
: 델파이에서는 텍스트 파일을 읽어서 라인단위로 문자열을 저장하는 게 어렵지 않았는데
: 씨빌더에서는 어떻게 해야 할 지 모르겠군요.(너무 초보라...)
:
: 씨빌더에서 텍스트 파일을 읽어서 라인단위로 문자열을 저장하려면 어떻게 해야 하는지 좀 가르쳐 주세요.
:
: 그리고 텍스트 파일의 라인수를 리턴하는 함수가 있으면 좀 알려 주세요.

빌더나 델파이나 동일한 VCL/CLX을 사용하기 때문에,
C++ 문법을 마스터하셨다면 거의 기계적인 노가다로 서로 수정할 수 있지 않나요?

VCL에서 텍스트 파일 처리를 가장 쉽게 하는 방법은
TStringList의 LoadFromFile()과 SaveToFile()함수를 쓰는 방법입니다.

라인 수는 TStringList의 Count 속성을 읽으면 되지요.

단, 텍스트 파일을 램에 전부 로드할 수 없을 정도로 크다면 이 방법을 쓸 수는 없겠죠.

이 경우에 굳이 VCL을 쓰려면 TFileStream을 쓰는 방법이 있습니다만,
텍스트 파일 처리용으로는 여러가지 귀찮은 면이 있죠.

: (참고로 델파이에서는 텍스트 파일을 파일포인터를 사용해서 열구 문자열 포인터에 라인별루 넘겨 주었습니다.
: 그리고 라인수는 한 라인을 읽을 때 마다 카운트를 하여 파일의 끝(EOF)에서 라인수를 리턴하였습니다.
: 좀 노가다를 했죠. ^^;;)

위의 말은 VCL을 안쓰고 파스칼 언어에서 지원하는 파일 입출력 기능을 썼단 말씀이죠?
ANSI C 라이브러리에서도 역시 파일포인터라는 개념을 사용하여 입출력합니다.
파스칼과 상당히 유사하지요.
fopen 을 비롯한 f로 시작하는 함수들을 사용하여 위의 알고리듬대로 구현하시면 됩니다.

C보다는 C++을 쓰고 싶으시다면
다음과 같이 간단하게 처리할 수 있습니다.

ifstream fin("in.txt");
ofstream fout("out.txt");
string line;
int count = 0;
while (getline(fin, line)) {
  fout << line << endl;
  ++count;
}

+ -

관련 글 리스트
25922 [질문] 텍스트 파일 라인 단위 입출력(?) 초보 1049 2003/06/13
25926     Re:[질문] 텍스트 파일 라인 단위 입출력(?) 김백일.cedar 3753 2003/06/13
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.