Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++로 파일 내용을 단어 단위로 읽는 방법

이 글에서는 C++를 사용하여 파일의 내용을 단어(word) 단위로 읽는 방법을 알아보겠습니다. 구현 자체는 매우 간단합니다. 핵심은 파일 입력 스트림(fstream)을 활용하는 것입니다.

파일 스트림으로 파일 이름을 지정해 파일을 연 뒤, 추출 연산자(>>)를 이용해 공백을 기준으로 단어를 하나씩 읽어 문자열 변수 word에 저장하고, 이를 반복적으로 콘솔에 출력하면 됩니다. >> 연산자는 기본적으로 공백(스페이스, 탭, 줄바꿈)을 건너뛰기 때문에 별도의 파싱 처리 없이도 단어 단위 입력이 가능합니다.

알고리즘

read_word_by_word(filename)

begin
    filename으로 파일 열기
    while 파일에서 새 단어를 읽을 수 있는 동안 do
        해당 단어를 콘솔에 출력
    done
end

테스트 파일 내용 (test_file.txt)

This is a test file. There are many words. The program will read this file word by word

예제 코드

#include<iostream>
#include<fstream>
using namespace std;

void read_word_by_word(string filename) {
    fstream file;
    string word;
    file.open(filename.c_str());
    while(file >> word) { // 단어를 하나씩 읽어 출력
        cout << word << endl;
    }
    file.close();
}

main() {
    string name;
    cout << "Enter filename: ";
    cin >> name;
    read_word_by_word(name);
}

코드를 살펴보면 read_word_by_word() 함수가 파일 이름을 인자로 받아 fstream 객체로 파일을 엽니다. 이후 while(file >> word) 조건문은 파일 끝(EOF)에 도달할 때까지 단어를 성공적으로 읽어오는 동안 반복되며, 읽힌 단어마다 cout으로 한 줄씩 출력합니다. 모든 읽기 작업이 끝나면 close()를 호출해 파일을 닫아 리소스 누수를 방지합니다.

실행 결과

Enter filename: test_file.txt
This
is
a
test
file.
There
are
many
words.
The
program
will
read
this
file
word
by
word

실행 결과에서 확인할 수 있듯이, 원래 문장의 공백과 마침표 등 구분자를 기준으로 각 단어가 개별적인 한 줄로 출력됩니다. 이 방식은 로그 분석, 단어 빈도 계산, 간단한 텍스트 전처리 등 다양한 상황에서 유용하게 활용할 수 있습니다.