シリアライズ関数でCSV形式ファイルの読み書き – プログラミング – Home

シリアライズ関数でCSV形式ファイルの...
 
通知
すべてクリア

[解決済] シリアライズ関数でCSV形式ファイルの読み書き


花
 花
(@花)
ゲスト
結合: 23年前
投稿: 2
Topic starter  

はじめまして。花と申します。
VC++をはじめて間もない初心者ですが、よろしくお願いいたします。

早速質問なのですが、MFC(SDI)のフォーム上にいくつか
エディットボックスを設置し、「読み込み」「書き込み」ボタンを
押下すると、そこに書き込まれた文字をダイアログを出しながら
SCV形式で保存したいのですが、うまくいきません...。

現在、シリアライズ関数を用いて保存しているのですが、
上記の形式に変えたく思っています。

どうかご教示をお願いいたします。

(現在書いているコードです。)
//シリアライズ関数
void CPerson::Serialize(CArchive &ar)
{
  //基本クラスのSerialize関数を呼び出す
  CObject::Serialize(ar);

  //書き込みと読み込みのどちらを行うか判定
  if (ar.IsStoring ())
    //すべてのメンバ変数を決められた順番で書き込む
    ar << m_sName <<m_sAdress << m_iAge << m_sPhone << m_sUrl << m_iMale;
  else
    //すべてのメンバ変数を決められた順番で読み込む
    ar >> m_sName >> m_sAdress >>m_iAge >> m_sPhone >> m_sUrl >> m_iMale;

}


引用未解決
トピックタグ
Bun
 Bun
(@Bun)
ゲスト
結合: 24年前
投稿: 761
 

> SCV形式

CSV でわ?

CFile, CStdioFile クラスあたりを学ばれてはいかがでしょうか。


返信引用
重
 重
(@重)
ゲスト
結合: 25年前
投稿: 84
 

> うまくいきません...。
どう、うまくいかないのでしょう?

以下は、ソースからの判断です。
まず、CSV形式は「カンマ区切りのテキスト」です。
書き込み、読み込み共にカンマの処理が行われていません。
更に、テキストですので、m_iAgeやm_iMale(int型ですよね?)では駄目です。

CArchiveならWriteString、ReadStringの方が適していると思います。

Bunさんの言われる様に、CFile, CStdioFileをチェックしてみては?


返信引用
ワルツ
 ワルツ
(@ワルツ)
ゲスト
結合: 23年前
投稿: 21
 

CString strCsvText;
strCsvText.Format( %s,%d, m_sAdress, m_iAge );

のように文字列を作成してその文字列をCStdioFileやなどで保存する。
でいかがでしょうか?

または、fprintfなどでファイルに保存するなど。


返信引用
カカシ
 カカシ
(@カカシ)
ゲスト
結合: 23年前
投稿: 3
 

お返事が遅くなって申し訳ありません。
CFile,CStdioFileなど、もう少し勉強してみます。

また、質問させていただくかもしれませんので、
その時はよろしくお願いいたします。

ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました