在 C++ 11 不支持计算机的情况下,在 C++ 中连接字符串和整数以读取多个文件

Concatenate string and integer in c++ for reading multiple file in case of C++ 11 not supporting computer

我想听听是否有解决这个问题的方法。我的电脑不支持 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);

注意:我是 C++ 的新用户。 提前谢谢你

问题

ifstream get(input); 也是 C++11 主义。在 C++11 之前,您不能使用 std::string 作为 std::ifstream 构造函数的参数。它只接受文件名作为指向空终止 char 数组的指针。

快速修复:

ifstream get(input.c_str());// c_str provides a null-terminated character array

更智能的修复:

但既然要拉出数字的stringstream,那你不妨全盘使用stringstream格式化整个文件名:

ostringstream temp;
temp << "pulse_value" << i << ".dat";
ifstream get(temp.str().c_str());