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]