回答編集履歴

2

コードを修正

2020/07/22 12:43

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -63,6 +63,8 @@
63
63
  result = tagger->parse(buffer);
64
64
 
65
65
  strcpy_s(buf, sizeof buf, result);
66
+
67
+ delete tagger;
66
68
 
67
69
  n = 0;
68
70
 
@@ -144,6 +146,8 @@
144
146
 
145
147
  while (iss >> word) cout << "[" << word << "]\n";
146
148
 
149
+ delete tagger;
150
+
147
151
  return 0;
148
152
 
149
153
  }
@@ -177,3 +181,11 @@
177
181
  [。]
178
182
 
179
183
  ```
184
+
185
+ **追記2**
186
+
187
+ MeCab::Tagger* tagger = MeCab::createTagger(""); で作った
188
+
189
+ MeCab::Tagger オブジェクトは、delete tagger; で解体しないと
190
+
191
+ メモリーリークするので、上の 2つのコードを修正しました。

1

mecab の -Owakati のコードを追加

2020/07/22 12:43

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -105,3 +105,75 @@
105
105
  }
106
106
 
107
107
  ```
108
+
109
+ **追記**
110
+
111
+ MeCab には品詞を出さないオプションがあるではありませんか。
112
+
113
+ ```C++
114
+
115
+ #pragma warning(disable: 4996)
116
+
117
+ #pragma comment(lib, "libmecab.lib")
118
+
119
+ #include <mecab.h>
120
+
121
+ #include <iostream> // cout
122
+
123
+ #include <sstream> // istringstream
124
+
125
+ #include <string> // string
126
+
127
+ using namespace std;
128
+
129
+
130
+
131
+ int main() {
132
+
133
+ char buffer[] = "頑張れカカロット、貴様がナンバーワンだ。";
134
+
135
+ MeCab::Tagger* tagger = MeCab::createTagger("-Owakati");
136
+
137
+ const char* result = tagger->parse(buffer);
138
+
139
+ cout << "[" << result << "]\n" "----------\n";
140
+
141
+ istringstream iss(result);
142
+
143
+ string word;
144
+
145
+ while (iss >> word) cout << "[" << word << "]\n";
146
+
147
+ return 0;
148
+
149
+ }
150
+
151
+ ```
152
+
153
+ 実行結果
154
+
155
+ ```
156
+
157
+ [頑張れ カカロット 、 貴様 が ナンバーワン だ 。
158
+
159
+ ]
160
+
161
+ ----------
162
+
163
+ [頑張れ]
164
+
165
+ [カカロット]
166
+
167
+ [、]
168
+
169
+ [貴様]
170
+
171
+ [が]
172
+
173
+ [ナンバーワン]
174
+
175
+ [だ]
176
+
177
+ [。]
178
+
179
+ ```