前回は有難うございました。
今回も宜しくお願いします。
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);
}
呈示されたコードが動かないからデバッグしてくれ、ということですか?
επιστημη様
返信有難うございます。
>呈示されたコードが動かないからデバッグしてくれ、ということですか?
いえ、違います。
一応、問題なく実行できる(ファイル⇒開く)のですが、テキストファイルからプログラ
ム実行時にデータを読み込むようにしたいのです。
'実行時にデータを読み込む'とは、アプリケーション起動時に一度だけ、ということですか?
だとすれば Serialize に実装するのは拙いのでは?
# てゆーか、当初の質問にはそんなこと一言も書いてないやん…
>実行時にデータを読み込む'とは、アプリケーション起動時に一度だけ、ということで
すか?
はいおっしゃるとおりです。
1.ファイルを読み込み
2.メンバ変数に追加
3.メンバ変数を利用して何らかの処理
この場合はSerialize に実装するよりいい方法はございますか?
よろしければご教授ください。
void CFIG1Doc::OnNewDocument() あたりはいかがでしょう。
# もっと適した位置があるかも。マニュアルを読んでください。
> void CFIG1Doc::OnNewDocument() あたりはいかがでしょう。
失礼。戻り値は void でなく BOOL です。
>void CFIG1Doc::OnNewDocument() あたりはいかがでしょう。
これは、有難うございます。また勉強しておきます。
void CFIG1View::OnDraw(CDC* pDC)
{
std::ifstream file(test.txt);
double x, y;
file >> x >> y ;
ところで、上述のようなコードではできないのでしょうか?
コンパイルしたら'std' : 識別子がクラス名でも名前空間名でもありません。というエラー
が出ます。
#include <fstream> を忘れていませんか?
返信有難うございます。
#include <fstream> は入っています。
…だったらそんなエラーが出るはずないんだが…
#include <fstream.h> ではダメですよ。
# それをどこに書きましたか?
> #include <fstream> は入っています。
入っているのは<fstream>じゃなくて<fstream.h>なのでは?
よく確認してみてください
#include <fstream.h>
すいません。hがはいっていました。
有難うございました。
最後に一つだけお聞きしたいのですが、
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 といったような場合です。
宜しくお願いします。
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を配列にする方法を教えてください。