トップ
新規
一覧
単語検索
最終更新
ヘルプ
ログイン
アールメカブ
strtokとmap
をテンプレートにして作成
開始行:
[[Programming]]
#include <iostream>
// #include <fstream>
#include <string>
#include <map>
using namespace std;
int main(int arg, char *argv[]){
char *token;
// char ss = argv[1];
char seps[] = " !$\"%^&*()_+=#{}[]:;'`/?,.\t\n\u00a3";
int i = 0;
char test[] = "this is a pen. that is a cat.";
// char * test = "this is a pen. that is a cat.";
// Segmentation fault (core dumped)
string m_token;
map<string, int> m1;
map<string, int>::iterator pa;
token = strtok(test, seps);
while( token != NULL )
{
// char *m_token = token;
m_token = token;
cout << m_token << endl;
if( (pa = m1.find(m_token)) != m1.end()){
//すでにマップにあるのなら
pa->second = pa->second + 1;
//二つ目の数値を加算
}
else{// そうでないなら,データを挿入
m1.insert(make_pair(m_token, 1));
}
// 次のトークンを取得します。
i++;
token = strtok( NULL, seps );
}
pa = m1.begin();
int n = (int)m1.size();
for (int i = 0; i < n; i++) {
cout << pa->first << " " << pa->second << endl;
pa++;
}
}
終了行:
[[Programming]]
#include <iostream>
// #include <fstream>
#include <string>
#include <map>
using namespace std;
int main(int arg, char *argv[]){
char *token;
// char ss = argv[1];
char seps[] = " !$\"%^&*()_+=#{}[]:;'`/?,.\t\n\u00a3";
int i = 0;
char test[] = "this is a pen. that is a cat.";
// char * test = "this is a pen. that is a cat.";
// Segmentation fault (core dumped)
string m_token;
map<string, int> m1;
map<string, int>::iterator pa;
token = strtok(test, seps);
while( token != NULL )
{
// char *m_token = token;
m_token = token;
cout << m_token << endl;
if( (pa = m1.find(m_token)) != m1.end()){
//すでにマップにあるのなら
pa->second = pa->second + 1;
//二つ目の数値を加算
}
else{// そうでないなら,データを挿入
m1.insert(make_pair(m_token, 1));
}
// 次のトークンを取得します。
i++;
token = strtok( NULL, seps );
}
pa = m1.begin();
int n = (int)m1.size();
for (int i = 0; i < n; i++) {
cout << pa->first << " " << pa->second << endl;
pa++;
}
}
ページ名: