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

问题描述 投票:0回答:1

我想听听是否可以解决此问题。我的计算机不支持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 ++的最近用户。预先谢谢你

c++ c++03 c++98
1个回答
0
投票

问题

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());
© www.soinside.com 2019 - 2024. All rights reserved.