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