- 締切済み
CSVを用いた検索プログラム動かし方
#pragma warning( disable: 4996 ) #include <stdio.h> #include <string.h> #include <fstream> using namespace std; typedef struct tagKOTOWAZA{ char japanese[50]; char english[50]; }KOTOWAZA; int main() { char buf[256]; KOTOWAZA c[200]; int i, count; /*ifstream strtok strcpy を使ってファイルを読み込む*/ //=====ここから===== ifstream fin("Book1.csv"); if(fin.is_open()){ //ファイル内容の表示とクローズ for(count=0;fin.getline(buf, sizeof(buf)), !fin.eof();count++){//読み込める間 //printf("%s",buf);デバッグ用 char *p; p = strtok(buf,","); if(p)strcpy(c[count].japanese,p); p = strtok(NULL,","); if(p)strcpy(c[count].english,p); } fin.close(); }else{ printf("ファイルのオープンに失敗しました。\n"); return 1; } //=====ここまで==== return 0; } ここからどうすればCSVファイルに書いた 漢字,English を検索できるのかがわかりません・・・ 言語はC++を使っていますvisualstudio2012を使っています。 どうすればいいのか全く分かりません。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
/* * Visual C++ 2013 でコンパイル/実行 * cl -EHsc csvsearch.cpp */ #include <iostream> #include <fstream> #include <string> #include <map> #include <array> #include <algorithm> using namespace std; int main() { map<string,string> dictionary; ifstream stream("Book1.csv"); if ( !stream.is_open() ) return -1; string line; while ( getline(stream,line) ) { // "○○○,×××," から "○○○" と "×××" を切り出して key, value とする string::size_type pos; pos = line.find(','); if ( pos == string::npos ) continue; string key = line.substr(0,pos); line = line.substr(pos+1); pos = line.find(','); if ( pos == string::npos ) continue; string value = line.substr(0,pos); // key/valueを辞書に登録 dictionary[key] = value; } // 以下の各keyについて array<string,4> keys = { "りんご", "みかん", "なし", "もも" }; for ( string key : keys ) { // 辞書を検索し、 auto iter = dictionary.find(key); if ( iter != dictionary.end() ) { // あったら出力 cout << "japanese=" << key << ", english=" << iter->second << endl; } else { // なかったら not found cout << "japanese=" << key << " not found" << endl; } } } /* Book1.csv: みかん,orange, りんご,apple, もも,peach, */
- Wr5
- ベストアンサー率53% (2173/4061)
>しかし、上述のソースをwindowsコンソールアプリケーション(からのプロジェクト)でデバッグ無しで実行すると何か入力してください...という状態のコンソールがでてきて、入力するとコンソールが消えてしまいます.... アプリ終了待ちでしょうかね。 「何か入力してください」とか表示されている時点でプロセスは終了していると思われます。 >漢字(林檎)を入力したらappleがかえってくるような 入力処理すらないのですから、無理でしょう。 # というか入力する方法って理解していますかね?
- Tacosan
- ベストアンサー率23% (3656/15482)
「ここからどうすればCSVファイルに書いた 漢字,English を検索できるのかがわかりません・・・」 ってことだけど, そもそも「『漢字,English』を検索」ってどういうこと? そして, どこから検索する?
補足
CSVファイルに 漢字,English 例) 林檎,apple といったものを作成し、そのファイルから 漢字(林檎)を入力したらappleがかえってくるようなプログラムを書きたいのです。 しかし、上述のソースをwindowsコンソールアプリケーション(からのプロジェクト)でデバッグ無しで実行すると何か入力してください...という状態のコンソールがでてきて、入力するとコンソールが消えてしまいます....