前提・実現したいこと
C++で別のツールで取得したスペース区切りの.txtファイルを読み取り構造体の配列に格納するクラスと関数の作成をしようとしています.
(そのテキストファイルをsample.txtとします)sample.txtは最初に一行分数字(フレーム数)がありその下にスペース区切りの数字となっています
2068
25 1 -123.927 882.716 -124.805 702.536 -147.31 536.905 88.4983 429.706 283.999 380.195 348.499 353.99 -155.85 181.82 -177.958 148.935 -189.238 -389.626 -212.93 -696.917 -181.122 -763.779(一行分です)
これが2068行分あります.
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
C++
1ソースコード
(sample.h)
class sample
{
private:
double time; // 時間[ms]
int clicked; // クリック入力
double head_x; // 頭
double head_y;
・・・
public:
double get_time() { return time; } //テスト
double get_hx() { return head_x; }
void in(std::string filename, sample a[]);
}
(sample.cpp)
void sample::in(std::string filename, sample a[]) {
int i; int frametime; if (auto f_in = std::ifstream(inK)) { f_in >> frametime; for (i = 0; i < frametime; i++) { f_in >> Joints[i].time >> Joints[i].clicked >> Joints[i].head_x >> Joints[i].head_y ・・・
}
(main.cpp)
#include <string>
#include "sample.h"
#define FRAME_NUM 2068
static std::string filename = "name";
static sample A[FRAME_NUM];
int main(){
A[0].in(filename, A);
std::cout << A[0].get_time() << std::endl;
std::cout << A[1].get_time() << std::endl;
std::cout << A[2].get_time() << std::endl;
std::cout << A[0].get_hx() << std::endl;
return 0;
}
試したこと
このコードで実行した場合
25
61
93
-123.927
と出力されます(成功)
試しにA[1].in(filename, A)やA[500].in(filename, A)と変えて実行してもうまくいきます. (⓵ これはなぜですか?)
⓶ FRAME_NUMを#defineしなくてもファイルから読み取ったframetimeでstd::vector <sample> Aをresize()して用いたいです.
その場合の各関数の仮引数の定義と引数の型が分かりません. 教えてください.
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。