Skip to content

mingjuu/CppConsoleTextEditor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📝 콘솔 기반 텍스트 편집기

📌 프로젝트 개요

이 프로젝트는 객체지향설계 과목의 텀프로젝트로, C++ 기반의 콘솔 환경에서 동작하는 텍스트 편집기를 구현한 결과물입니다. 페이지 단위 출력, 문자열 조작, 텍스트 탐색 및 수정 기능 등을 포함하며, 디자인 패턴 을 활용한 객체지향적 설계를 목표로 합니다.


🎯 과제 목표

  • test.txt 파일을 프로그램 실행 시 자동 로드
  • 한 페이지는 20라인 × 75바이트 기준으로 출력
  • 사용자의 명령어를 기반으로 텍스트 삽입, 삭제, 검색, 치환 등을 처리
  • 싱글톤 디자인 패턴을 활용한 구조적인 텍스트 편집기 구현
  • 비정상 입력에 대한 예외 처리

🧩 디자인 패턴 적용

✔ 사용한 패턴: Singleton Pattern

이 프로젝트에서는 TextEditor 클래스에 싱글톤(Singleton) 패턴을 적용했습니다.

  • TextEditor는 텍스트 편집의 핵심 기능을 담당하며, 프로그램 전반에서 빈번하게 호출됩니다.
  • 해당 클래스의 인스턴스를 하나로 제한함으로써 메모리 낭비를 방지하도록 의도했습니다.
  • 실제 구현에서는 static 포인터getInstance() 메서드를 활용하여 하나의 인스턴스를 생성 및 재사용합니다.

📁 주요 파일 구성 및 설명

파일명 설명
TextEditor.h 편집 기능을 담당하는 핵심 클래스이며, Singleton 패턴이 적용됨
File.h 텍스트 파일 읽기, 페이지 정보 유지 등 입출력 관리 담당
InputView.h 사용자 입력을 받아 처리하는 UI 레벨 인터페이스
PrintFile.h 텍스트 데이터를 콘솔에 출력 (20라인 × 75바이트 기준)
RequesParser.h 명령어를 파싱하여 각 명령에 맞는 인자를 분리하는 유틸리티
main.cpp 프로그램 시작점. 파일 로딩, 메뉴 출력, 사용자 명령 처리 루프 등

⚙️ 주요 명령어 기능

명령어 설명
i(line, index, text) 해당 라인의 index 위치에 문자열 삽입
d(line, index, length) 해당 라인의 index 위치부터 length 바이트 삭제
s(word) 단어가 포함된 라인을 페이지 최상단에 위치시키며 출력
c(target, replacement) 모든 target 문자열을 replacement로 치환
t 편집된 내용을 파일에 저장하고 종료
n 다음 페이지 출력
p 이전 페이지 출력

✅ 입력 예시

입력: i(1,10,hello) → 1번째 라인 10번째 위치에 'hello' 삽입  
입력: d(2,10,3)     → 2번째 라인 10번째 위치부터 3바이트 삭제  
입력: c(hello,bye)  → 'hello' 문자열 전체를 'bye'로 변경  
입력: s(bye)        → 'bye'가 있는 첫 라인을 화면 상단에 출력  
입력: t             → 저장 후 종료  

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published