• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Serialize(CArchive& ar)にて)

MFC VC2008のSerialize関数についての質問

このQ&Aのポイント
  • 「Serialize(CArchive& ar)」関数についての質問です。質問者がVC2008のMFC:SDIで作成したプログラムで、入力画面を作成し、Serialize関数内でファイルの読み書きを行っています。しかし、書き込み時にスペースが含まれた形で保存され、読み込み時には正しく表示されるという現象が発生しています。質問者は、なぜスペースまでが一区切りとして判断され、m_Nameに代入されるのか疑問に思っています。
  • 質問者は、csvのように半角スペースで区切って保存されているのではないかと考え、テストとして「氏名:aaaa▲bbbb」と入力し保存したところ、正しく表示されたと述べています。質問者は、どのような仕組みで「eeeeまでが一区切りとして判断され、m_Nameに代入されるのか」を知りたいとしています。
  • 参考情報として、質問者は「http://msdn.microsoft.com/ja-jp/library/dz8k76ze」を参照したが、疑問点についてはわからなかったと述べています。質問者は、どなたかご教授いただけると幸いとしています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

うーん、本当に半角スペースで区切られているのかは疑問。 もしそうなら m_Name 等にスペース入力した時正しく処理できないはず! テキストファイルを編集して表示できたとしても、それはたまたまかも? 区切りが何であるのかはテキストエディタではなく、バイナリエディタで確認する必要がある。 そもそも、なんでそんなことを知りたいの? > なぜ  > 「eeeeまでが一区切りとコンピューターが判断し、m_Nameに代入できたのか?」 > というのが知りたいのです。(m_Yubin、m_Jushoも正しく代入されているため問題なく表示できています。) という疑問についての答えは、「CArchive に保存/読み出しをする時のルールをm_Nameの変数型である(多分)CString が 決めているので 保存/読み出しでちゃんと辻褄があるように処理している」から。 CStringが実際にどう処理しているかを分かった所で、何をやりたいの? デバッグの為に調査することは意味があるかも知れないが、自分か作成していないクラスの処理の詳細は、一般的には知るべきではないと思うし、知る必要もないと思う(そうでないとカプセル化に反する)。

ShiftTail
質問者

お礼

>「CArchive に保存/読み出しをする時のルールをm_Nameの変数型である(多分)CString が 決めているので 保存/読み出しでちゃんと辻褄があるように処理している」から。 やはり、そういう仕様なのですね。 気になった理由としては、 【m_Nameで受けとった値が、ファイル保存後読み出したときに、「m_Yubin」に入ったりすることがないのか?】 と疑問に思ったからです。 もし、そんなことが起こった場合、 「そこの仕様がわからないと、何が原因で、m_Yubinに入ったのか。」 に対応できなくなるかな。と思ったのです。 ただ、教えて頂いた仕様なら、気にする必要はないかなと思いました。 情報ありがとうございました。すっきりしました。

関連するQ&A