我目前正在尝试从.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
您从文件中读取的方式将读取行而不是列。既然您说了我的意思是要从列中读取数据(所有长度都相同),为什么需要几个整数:
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上指针的大小。您写入文件的方式还是逐行而不是逐列
关于c++ - 读取数据列,移位,将数据打印到C++中的.txt文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17574137/