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

您从文件中读取的方式将读取行而不是列。既然你说我的意图是从列中读取数据(都具有相同的 lenth,为什么你需要几个整数:cola, colb, colc...??

为了让您的代码从列中读取,您必须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 回答