私のpull_data関数が呼び出し時にクラッシュして「myMap [word] ++」行に絞り込まれた理由を理解できません。しかし、私が正しく理解すれば、それはうまくいくはずです。キー "word"を持つ要素が存在しない場合と同様に、要素が作成され、値が初期化されます。データをマップに読み込む問題
私の最初のバリエーションでは、2つの異なるファイルがプルされ、2つの異なるマップにデータが保存されます。
if (file.is_open()) {
while (file >> word) {
myMap[word]++;
}
file.close();
}
else {
cout << "Unable to open file.";
}
しかし、2つの異なるファイルから引き出すのではなく、私が必要とするすべてのデータを1つ読み込むようにしようとしています。私がオン側かオフ側から読んでいるかどうかを示す。
#include <iostream>
#include <fstream>
#include <map>
#include <string>
using namespace std;
void pull_data(map<string, float>& myMap1, map<string, float>& myMap2);
void push_data(map<string, float> myMap1, map<string, float> myMap2);
void sync_data(map<string, float>& myMap1, map<string, float>& myMap2);
int main()
{
map<string, float> offData;
map<string, float> onData;
pull_data(offData, onData);
sync_data(offData, onData);
push_data(offData, onData);
system ("PAUSE");
return 0;
}
void pull_data(map<string, float>& myMap1, map<string, float>& myMap2) {
string word;
bool onOff = false;
ifstream file("Data.txt");
if (file.is_open()) {
while (file >> word) {
if(word == "|" && onOff){
onOff = false;
}else if(word == "|"){
onOff = true;
}
if(onOff){
myMap2[word]++;
}else{
myMap1[word]++;
}
}
file.close();
}
else {
cout << "Unable to open file.";
}
}
void push_data(map<string, float> myMap1, map<string, float> myMap2){}
void sync_data(map<string, float>& myMap1, map<string, float>& myMap2){}
DATA.TXT例
362 364 | 112 304 122 124 |
364 304 901 116 | 351 303 112 |
362 364 311 | 351 612 400 484 303 326 |
をあなたがキー[単語]で返されたデータの値を増やすべき「++」演算子を使用していますが、可能性があるのでされていますnullデータを持つ演算子++ crach。マップは、構文myisap = word(オペレータ "="を使用して)を使用して値を作成して初期化します –
std :: strcmp –