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

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

我的电脑不支持C++ 11,所以我不能用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];
}
}

但是,它给我的是.NET语言,而不是.NET语言,我想让C++部分在ROOT程序中通过循环读取所有文件,并从每个文件中通过ifstream读取三列。

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个回答
1
投票

問題

ifstream get(input); 也是C++11-主义。在C++11之前,你不能使用 std::string 作为对 std::ifstream 构造函数。它只接受文件名作为一个指向null-terminal的 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());
© www.soinside.com 2019 - 2024. All rights reserved.