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

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

本文关键字:计算机 不支持 情况下 读取 文件 连接 c++ 字符串 整数 C++      更新时间:2023-10-16

我想听听这个问题是否有解决方案。 我的电脑不支持 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构造函数的参数。它只接受文件名作为指向以 null 结尾的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());