0

現在、.txt ファイルからデータを書き込もうとしています。ファイル (second.txt) には、粒子のプロパティを説明する 5 つの列が含まれています。

私の意図は、列からデータを読み取り(すべて同じ長さ)、それらを配列に格納し、各数値をビットシフトして、小数の代わりに整数を使用できるようにし、新しいデータを新しいoutput.txtに書き込むことです。ファイルを Python で使用するために使用します ("種類" が知られている唯一の言語)。

これまでの私の試みは次のとおりです。

#include <fstream>
#include <iostream>


using namespace std;

void saveArray(double* array)
{
int length = sizeof(array);
ofstream output("output.txt");
for(int i=0;i<length;i++)
{
output<<array[i]<<endl;
}
}

int main()

{

ifstream inFile;

int cola, colb, colc, cold, cole;

inFile.open("second.txt");

inFile >> cola >> colb >> colc >> cold >> cole;

double n[cola];
double x[colb];
double y[colc];
double zeros[cold];
double r[cole];

for (int i = 0; i <= cola; ++i)
{
    inFile >> n[i];

};

for (int k = 0; k <= colb; ++k)
{
     inFile >> x[k];

};

for (int j = 0; j <= colc; ++j)
{
    inFile >> y[j];

};

for (int z = 0; z <= cold; ++z)
{
    inFile >> zeros[z];

};

for (int a = 0; a <= cole; ++a)
{
    inFile >> r[a];

};

int s = 2;

n << s;
x << s;
y << s;
r << s;

saveArray(n);
saveArray(x);
saveArray(y);
saveArray(r);

return 0;

}

このコードを機能させる方法についてのヒントをいただければ幸いです。

4

1 に答える 1

1

小数の代わりに整数を使用できるように、各数値をシフトします

キャストint()するだけで小数部分がなくなります...

あなたのforループ:

for (int i = 0; i <= cola; ++i)
//                 ^ the equal sign has to be removed
//                 since n[cola] doesn't exist

ファイルから読み取る方法は、列ではなく行を読み取ります。あなたが言うように、私の意図は列からデータを読み込むことです(すべて同じ長さですcolacolbcolc

列からコードを読み取るには、for次のようにループを記述する必要があります。

for (int i=0; i<nrchars; i++){
    inFile >> col1[i];
    inFile >> col2[i];
    ....
    inFile >> colN[i]; // Nth column
}

また、次のように変更する必要がありますsaveArray()

  • sizeof(array)配列の長さはわかりません。sizeof(array)は、PC 上のポインターのサイズを示します。
  • ファイルへの書き込み方法は、列単位ではなく行単位です
于 2013-07-10T15:17:29.453 に答える