C++ 将数字从文件读入数组
因此,我有一个包含三列的文件,例如:C++ 将数字从文件读入数组,c++,arrays,file,root-framework,C++,Arrays,File,Root Framework,因此,我有一个包含三列的文件,例如: 1 1 750 这些是x、y、强度值 然后我尝试将这个长文件读入数组。这是迄今为止的代码: using std::cout; using std::endl; using std::string; string fOutFileName("gaintest.root"); int main() { std::ifstream file1("data_p30.dat"); double intensity; int i; int
1 1 750
这些是x、y、强度值
然后我尝试将这个长文件读入数组。这是迄今为止的代码:
using std::cout;
using std::endl;
using std::string;
string fOutFileName("gaintest.root");
int main()
{
std::ifstream file1("data_p30.dat");
double intensity;
int i;
int j ;
double c[1000][1000];
if (file1.is_open()) {
file1.seekg(0);
while (!file1.eof()) {
file1 >> i >> j >> intensity;
c[i][j]=intensity;
cout<<c[i][j]<<'/n';
}
file1.close();
} else cout << "Error, cannot open file 1";
}
使用std::cout;
使用std::endl;
使用std::string;
字符串fOutFileName(“gaintest.root”);
int main()
{
std::ifstream文件1(“data_p30.dat”);
双强度;
int i;
int j;
双c[1000][1000];
if(file1.is_open()){
文件1.seekg(0);
而(!file1.eof()){
文件1>>i>>j>>强度;
c[i][j]=强度;
C组cout++
前1000个被丢弃,编译器生成以下代码:
double c[1000];
你所写的[1000, 1000 ]是PASCAL中的多维数组,但不是C++中的。在C++中,你会使用:
double c[1000][1000];
你所显示的错误是由root生成的。因为这不是根论坛,root是CERN的科学家开发的C++数据分析框架。对于好奇,他们的网站是。但是你的问题与根无关。
二维数组由
double a[2][2];
这会对你有用的
也许更安全的方法是使用模板类
std::vector<double> v;
将在向量的末尾添加一个元素,必要时将其拉长
v[1]
或
使用实际的矩阵类型,而不是像Buffux[]][COD] > Boost UBLAS和NT2<代码>双C [10001000 ];< /C> >,这是有效的C++,但是它完全不符合你的想法。这个错误可能对你没有任何意义,但对我们来说是非常有帮助的。这不是实际的代码,所以我已经添加了完整的代码。(虽然我不知道我的TH2D目前有多大帮助,因为我不画画)。它应该开始在我的屏幕上吐出强度值,但它没有。好的,所以我将其更改为该值,并在上面的“我收到”中添加了错误。不,您将在C中使用该值。您将在C++Hmmm中使用数组,但我只是使用egarray[][]它对root有效。我认为问题不再存在。其他问题是“/n”是一个多字节字符。请尝试使用“\n”(或std::endl)。如果要删除重复的最后一行:I=-1;file1>>I>>j>>强度;if(I==-1)break;
std::vector<double> v;
std::vector<std::vector<double> > v2;
v.push_back(d);
v[1]
v2[1][2]