我想听听是否可以解决此问题。我的计算机不支持C ++ 11,因此我无法通过std::string to_string
连接字符串和整数...而是使用了字符串流。我希望ROOT程序中的C ++部分通过循环读取每个文件,并通过ifstream从每个文件读取三列。
int N= ;
for (i=1; i<=N; i++){
ending = ".dat";
name0 = "pulse_value";
ostringstream temp;
temp << i;
str = temp.str();
input = name0 + str + ending;
ifstream get(input);
for (int j=0; j<N4; j++){
time[j]=0.;
energy[j]=0.;
current[j]=0.;
get >>time[j]>>energy[j]>>current[j];
}
}
但是它给了我:
Can't call basic_ifstream<char,char_traits<char> >::basic_ifstream<char,char_traits<char> >(input).
basic_ifstream<char,char_traits<char> > basic_ifstream<char,char_traits<char>>::basic_ifstream<char,char_traits<char> >(void);
NB:我是C ++的最近用户。预先谢谢你
ifstream get(input);
也是c ++ 11-ism。在c ++ 11之前,不能将std::string
用作std::ifstream
构造函数的参数。它仅接受指向以空值结尾的char
数组的指针
ifstream get(input.c_str());
但是由于您必须提取数字的stringstream
,因此不妨全力以赴,并使用stringstream
格式化整个文件名:
ostringstream temp;
temp << "pulse_value" << i << ".dat";
ifstream get(temp.str().c_str());