• 締切済み

mapの使い方教えてください

環境 Visual C++ 2008  Microsoft .NET Framework Version 3.5 まだC++をはじめたばかりでよくわかっていない初心者です。 <vector>を使ったソースは出来たのですが、<map>を使って書き直したいと思ってます。 ですがよく理解出来ずに悩んでます。 やりたいことは、 1:ファイルを読み込む 2:ファイルから必要なデータを取り出す 3:データを集計する 4:データを下のように出力する      6620f4ff   SB006  1件 読みにくいかもしれませんが、自分の書いたソースを載せておきます。 読み込むデータファイルの中身も下に載せておきます。 アドバイスをお願いします。 #include <vector> #include <fstream> #include <iostream> using namespace std; struct Record{ char mesh[10]; char err[6]; int num;  }; #define MESHKEYWORD "メッシュ" #define ERRKEYWORD "ERROR" int main() { ifstream fin(Data001.txt); if(!fin){ return 1; } char str[1024]; Record rec; vector<Record> ary; ary.clear() ; do { fin.getline(str,sizeof(str));    if(strncmp(&str[0], MESHKEYWORD,strlen(MESHKEYWORD)) == 0) { strncpy(rec.mesh,&str[10],8); rec.mesh[8] = '\0'; } if(strncmp(&str[0], ERRKEYWORD,strlen(ERRKEYWORD)) == 0) { strncpy(rec.err,&str[6],5); rec.err[5] = '\0'; bool searchresult = false; for(int i=0; i < ary.size(); i++){ if(strcmp(ary[i].mesh,rec.mesh) == 0){ if(strcmp(ary[i].err,rec.err) == 0){ ary[i].num++; searchresult = true; } } } if(searchresult == false){ rec.num = 1; ary.push_back(rec) ; } } }while(!fin.eof()); for(int i=0; i < ary.size(); i++){ cout << ary[i].mesh << '\t'; cout << ary[i].err << '\t'; cout << ary[i].num << "件\n"; } fin.close() ; ary.clear() ; return 0; } ちなみにデータファイルの中身はこんな感じです。 Data001.txt メッシュ[ 6620f4ff ]を読み込みます レベル:4 緯度方向:6144 経度方向:2560 ERROR:SB006 背景種別単位ヘッダのオフセットが不正です ERROR:KT005 データヘッダ1WのRESERVEDに設定されています ERROR:MNR08 道路図郭ノードから隣接図郭ノードへのリンク方向が異なります メッシュ[ 6622f4ff ]を読み込みます レベル:4 緯度方向:6144 経度方向:2816 メッシュ[ 5816f5ff ]を読み込みます レベル:5 緯度方向:5120 経度方向:2048 ERROR:KT005 データヘッダ1WのRESERVEDに設定されています ERROR:KT009 隣接ノード対応情報.自レベル情報.RESERVEDに設定されている ERROR:KT010 隣接ノード対応情報.下位レベル情報.下位レベルノード番ERROR:KT010 隣接ノード対応情報.下位レベル情報.下位レベルノード番

みんなの回答

回答No.1

下記参照

参考URL:
http://bbs.wankuma.com/index.cgi?mode=al2&namber=20954

関連するQ&A