#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <map>
using namespace std;
// 읽어들인 문자열를 잘라서 단어로 반환하는 함수
vector<string> split(const string &s) {
vector<string> ret;
int i=0, j;
while(i<s.size()) {
while(i<s.size()&&!isalnum(s[i])) ++i;
j=i;
while(j<s.size()&&!isspace(s[j])&&(isalnum(s[j])||s[j]=='_')) ++j;
if(i<j) {
string tmp = s.substr(i,j-i);
ret.push_back(tmp);
i=j;
}
}
return ret;
}
int main() {
string s;
map<string,int> word_count;
map<string,int>::const_iterator m_it;
ifstream in("data.txt");
while(getline(in, s)) { // 파일로부터 한 줄씩 읽어들임.
vector<string> vec;
vec=split(s);
for(int i=0;i<vec.size();++i) {
++word_count[vec[i]];
}
}
for(m_it=word_count.begin();m_it!=word_count.end();++m_it)
cout << m_it->first << "\t" << m_it->second << endl;
return EXIT_SUCCESS;
}
'c·c++ > c++ 프로그래밍' 카테고리의 다른 글
cin.getline 입력 (0) | 2012.09.16 |
---|---|
동적할당을 이용한 무한자리수 덧셈 (0) | 2012.09.14 |
삼각형의 외심 구하기 (0) | 2012.08.23 |
getline (0) | 2012.08.16 |
숫자열에서 한숫자씩 입력받기 (0) | 2012.07.08 |