serializeについて – プログラミング – Home

通知
すべてクリア

[解決済] serializeについて

固定ページ 1 / 2

仕事人
 仕事人
(@仕事人)
ゲスト
結合: 22年前
投稿: 13
Topic starter  

前回は有難うございました。
今回も宜しくお願いします。
test.txt
1 2
3 4
5 6
7 8
9 10
上記のテキストの内容(x座標、y座標)を取り出すにはどうしたらよいですか?
下にソースに付加する形で説明していただければ嬉しいです。
宜しくお願いします。

void CFIG1Doc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO: この位置に保存用のコードを追加してください。
}
else
{// Serialize 関数内で
CArray <double, double> m_x; // X座標
CArray <double, double> m_y; // Y座標

if(ar.IsStoring()) return;

double xTemp, yTemp;
CString buf;

m_x.RemoveAll();
m_y.RemoveAll();

// 一行読み出し、
while(ar.ReadString(buf))
{
// 値をとりだし、
sscanf(buf, %lf %lf, &xTemp, &yTemp);

// メンバ変数に追加
m_x.Add(xTemp);
m_y.Add(yTemp);
}


引用未解決
トピックタグ
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 600
 

呈示されたコードが動かないからデバッグしてくれ、ということですか?


返信引用
仕事人
 仕事人
(@仕事人)
ゲスト
結合: 22年前
投稿: 13
Topic starter  

επιστημη様
返信有難うございます。
>呈示されたコードが動かないからデバッグしてくれ、ということですか?
いえ、違います。
一応、問題なく実行できる(ファイル⇒開く)のですが、テキストファイルからプログラ
ム実行時にデータを読み込むようにしたいのです。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 600
 

'実行時にデータを読み込む'とは、アプリケーション起動時に一度だけ、ということですか?
だとすれば Serialize に実装するのは拙いのでは?

# てゆーか、当初の質問にはそんなこと一言も書いてないやん…


返信引用
仕事人
 仕事人
(@仕事人)
ゲスト
結合: 22年前
投稿: 13
Topic starter  

>実行時にデータを読み込む'とは、アプリケーション起動時に一度だけ、ということで
すか?
はいおっしゃるとおりです。
1.ファイルを読み込み
2.メンバ変数に追加
3.メンバ変数を利用して何らかの処理
この場合はSerialize に実装するよりいい方法はございますか?
よろしければご教授ください。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 600
 

void CFIG1Doc::OnNewDocument() あたりはいかがでしょう。
# もっと適した位置があるかも。マニュアルを読んでください。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 600
 

> void CFIG1Doc::OnNewDocument() あたりはいかがでしょう。

失礼。戻り値は void でなく BOOL です。


返信引用
仕事人
 仕事人
(@仕事人)
ゲスト
結合: 22年前
投稿: 13
Topic starter  

>void CFIG1Doc::OnNewDocument() あたりはいかがでしょう。
これは、有難うございます。また勉強しておきます。
void CFIG1View::OnDraw(CDC* pDC)
{
std::ifstream file(test.txt);
double x, y;
file >> x >> y ;

ところで、上述のようなコードではできないのでしょうか?
コンパイルしたら'std' : 識別子がクラス名でも名前空間名でもありません。というエラー
が出ます。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 600
 

#include <fstream> を忘れていませんか?


返信引用
仕事人
 仕事人
(@仕事人)
ゲスト
結合: 22年前
投稿: 13
Topic starter  

返信有難うございます。
#include <fstream> は入っています。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 600
 

…だったらそんなエラーが出るはずないんだが…
#include <fstream.h> ではダメですよ。

# それをどこに書きましたか?


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

> #include <fstream> は入っています。
入っているのは<fstream>じゃなくて<fstream.h>なのでは?
よく確認してみてください


返信引用
仕事人
 仕事人
(@仕事人)
ゲスト
結合: 22年前
投稿: 13
Topic starter  

#include <fstream.h>
すいません。hがはいっていました。
有難うございました。


返信引用
仕事人
 仕事人
(@仕事人)
ゲスト
結合: 22年前
投稿: 13
Topic starter  

最後に一つだけお聞きしたいのですが、
void CFIG1View::OnDraw(CDC* pDC)
{
 std::ifstream file(test.txt);
double x, y,ptr; //
file >> x >> y ;
xとyに何個、数が入力されたかを動的変数としてあらわす方法を教えてください。
test.txt
1 2
3 4
5 6
7 8
9 10
この場合ですと、xの数a=5、yの数b=5 といったような場合です。
宜しくお願いします。


返信引用
仕事人
 仕事人
(@仕事人)
ゲスト
結合: 22年前
投稿: 13
Topic starter  

void CFIG1View::OnDraw(CDC* pDC)
{
 std::ifstream file(test.txt);
double x, y,ptr; //
file >> x >> y ;

a=sizeof(x)/sizeof(x[0]);//配列サイズ(このような)
上述のような感じで取り出したいのですが、x,yを配列とすることができません00。
宜しくお願いいたします。
上記のようなコマンドでとりだしたx、yを配列にする方法を教えてください。


返信引用
固定ページ 1 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

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