c·c++/c++ 프로그래밍

단어 갯수세기

바로이순간 2012. 8. 31. 10:44

#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