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