はじめまして。花と申します。
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;
}
> SCV形式
CSV でわ?
CFile, CStdioFile クラスあたりを学ばれてはいかがでしょうか。
> うまくいきません...。
どう、うまくいかないのでしょう?
以下は、ソースからの判断です。
まず、CSV形式は「カンマ区切りのテキスト」です。
書き込み、読み込み共にカンマの処理が行われていません。
更に、テキストですので、m_iAgeやm_iMale(int型ですよね?)では駄目です。
CArchiveならWriteString、ReadStringの方が適していると思います。
Bunさんの言われる様に、CFile, CStdioFileをチェックしてみては?
CString strCsvText;
strCsvText.Format( %s,%d, m_sAdress, m_iAge );
のように文字列を作成してその文字列をCStdioFileやなどで保存する。
でいかがでしょうか?
または、fprintfなどでファイルに保存するなど。
お返事が遅くなって申し訳ありません。
CFile,CStdioFileなど、もう少し勉強してみます。
また、質問させていただくかもしれませんので、
その時はよろしくお願いいたします。
ありがとうございました。