dポイントプレゼントキャンペーン実施中!

VC++でCSVファイルの読み込みを作っています。

ファイル名「abc.csv」というファイルがあり
CSVファイルの内容は、
"id","food"
"1","バナナ"
"2","オレンジ"

となっています。

ソース上はファイルをオープンして
読み込むところまでは分かりましたが、
CSVファイルのコンマの分解とその後の処理が分かりません。読み込んだ後、コンボボックスで、CSVファイルのname一覧を表示する予定でいます。
例では、バナナ
    オレンジ
とコンボボックスで表示して選択できるようにします。

今のソースは以下の通りです。

CStdioFile file;

CString name;
int flag;

 if(!file.Open("abc.csv",CFile::modeRead)){
AfxMessageBox("File Open failed");
}
while(flag){
if(file.ReadString(name)==FALSE) //nameにデータ読み込み
break;
//CSVコンマを分解

//テキスファイルで読み込み?表示?

}
file.Close();//file close

初心者なので間違いだらけかもしれませんが
よろしくお願いしますm(__)m

A 回答 (4件)

一文字ずつ読み込んで、区切り記号で分解するのがスタンダードな手法だと思いますが。

    • good
    • 0
この回答へのお礼

アドバイスをありがとうございますm(__)m
その後、いろいろといじってみたのですが
行きづまってしまったので、一文字ずつ読む方法で考えることにしました!

お礼日時:2006/09/13 10:35

No.1さんが仰るとおり、1文字づつ読んで処理するのが一般的ではないかと思います。


質問者さんがCSV読み込みのコード作成に力を掛けたいのであれば、1文字づつの処理をお勧めします。

ちなみに、CSVのフォーマットは非常に簡単なのですが、以外に?見落とされやすい形式で出力される場合もあるので勉強するのによいかと。(例えば、データに カンマやダブルクォートがある場合とか。エクセルでわざと出してみるといいかもです。)
    • good
    • 0
この回答へのお礼

ありがとうございます!

その後、作成していたプログラムが行き詰まってしまったので、No.1さんの通り、一文字ずつ読んでいく処理に変えました(^^ゞ
一文字ずつ読み込んで、コンマでそれぞれ分解された文字を配列に格納してみました。
これからも勉強になるよう、色々と試しながら
やっていこうと思います。

お礼日時:2006/09/13 10:39

VC6.0なら


AfxExtractSubString(CString &rString, LPCTSTR lpszFullString, int iSubString, TCHAR chSep);
とかかな。

参考URL:http://msdn2.microsoft.com/en-us/library/ms19511 …
    • good
    • 0

最近のMFCにはTokenizeというメンバ関数があるようです。


http://msdn.microsoft.com/library/ja/default.asp …
VC++6.0には無いようですが……
    • good
    • 0
この回答へのお礼

ありがとうございます!
これからの勉強の参考にさせて頂きます。

お礼日時:2006/09/13 10:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!