我目前正在尝试从.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;

}


我非常感谢有关如何使此代码正常工作的一些提示。

最佳答案

移位每个数字,以便我可以使用整数而不是小数:

只需投放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上指针的大小。
您写入文件的方式还是逐行而不是逐列

关于c++ - 读取数据列,移位,将数据打印到C++中的.txt文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17574137/

10-11 22:38
查看更多