私は3つの異なる速度成分と各速度測定に関連するタイムスタンプを持つテキストファイルを持っています。 text file can be seen here。テキストファイルから構造体配列にコンポーネントベクトルデータを読み込むC++
u成分はx方向に対応し、vはy方向に対応し、wはz方向に対応する。私はちょうど、私が構造なしで、唯一の全体的な速度でこれをやったとき、過去に
struct cmpnts
{
double x, y, z;
}
:今、私はこれらのデータポイントを取るように定義された速度成分のための私の構造、にそれらを配置する必要がありますファイルを読み込んだときに動的配列を作成できるようにポインタを使用しました。これは、各風速ファイルのポイント数が変化するため動的でなければならず、新しいファイルを使用するたびに値を手動で再定義することはできません。
は私のコードは次のように見えた構造ずにこれを行うには:私はこれはしかし、私の構造で動作するように見えることはできませんint main()
{
int numberofpoints; // the number of data points
// char arrays for storing the variables names
char ch1[128], ch2[128];
cout << ch1 << endl;
// Two pointers for creating the dynamic arrays later
double *itime, *windspeed;
// create an object for reading a file
ifstream imyfile;
// open windspeed.txt
imyfile.open("windspeed.txt");
if (imyfile.is_open()) // check if the file is open
{
// read the total number of data points
imyfile >> numberofpoints;
// double arrays for storing time and the velocity variables
itime = new double[numberofpoints];
windspeed = new double[numberofpoints];
// read the two variable names in windspeed.txt file
imyfile >> ch1 >> ch2;
// read the time and wind speed
int i;
for (i = 0; i<numberofpoints; i++)
{
imyfile >> itime[i] >> windspeed[i];
}
// close the file
imyfile.close();
}
else
{
cout << "unable to open the file";
exit(0);
}
}
。私はポインタのどこかで文法エラーを起こしていると確信しています(私はC++を初めて使っていますので、何かばかげていると謝ります)。ポインタなしでこれを行うことは可能ですか?構造物に読み取るための私のコードは次のようになります(と明らかにそれは働いていない!):
#include <iostream>
#include <fstream>
using namespace std;
struct cmpnts
{
double x, y, z;
};
struct wind
{
cmpnts velocity;
cmpnts direction;
cmpnts urms;
double airdensity;
};
struct turbine
{
double R, Cp, V, yaw, power;
cmpnts direction;
};
int main()
{
// Read data from file
int numberofpoints; // the number of data points
char ch1[128], ch2[128], ch3[128], ch4[128]; // Char arrays for storing the variables names
// Pointers for creating the dynamic arrays later
double *itime;
cmpnts *uSpeed;
cmpnts *vSpeed;
cmpnts *wSpeed;
// create an object for reading a file
ifstream imyfile;
// open windspeed.txt
imyfile.open("windspeed.txt");
if (imyfile.is_open()) // check if the file is open
{
// read the total number of data points
imyfile >> numberofpoints;
// double arrays for storing time and the velocity variables
itime = new double[numberofpoints];
uSpeed->x = new double[numberofpoints];
vSpeed->y = new double[numberofpoints];
wSpeed->z = new double[numberofpoints];
// read the two variable names in windspeed.txt file
imyfile >> ch1 >> ch2 >> ch3 >> ch4;
// read the time and wind speed
int i;
for (i = 0; i<numberofpoints; i++)
{
imyfile >> itime[i] >> uSpeed[i] >> vSpeed[i] >> wSpeed[i];
}
// close the file
imyfile.close();
}
else
{
cout << "unable to open the file";
exit(0);
}
}
「cmpnts * uSpeed;」とは何でしょうか? – kfsone
また、実際にwindspeed.txtがどのように見えるかを示してください。 – kfsone