在 c++ 中连接字符串和整数,以便在 C++ 11 不支持计算机的情况下读取多个文件
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
构造函数的参数。它只接受文件名作为指向以 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());
相关文章:
- 为什么istream不支持右值提取
- 错误:(-210:不支持的格式或格式组合)功能'create'中的硬件视频解码器不支持视频源
- Casablanca/cpprestsdk listener.support接受函数,但不支持方法
- 为什么C++不支持对未初始化变量进行智能分析?
- 在 c++ 中连接字符串和整数,以便在 C++ 11 不支持计算机的情况下读取多个文件
- 在 Ubuntu 18.04 上编译 GLSL 着色器时"不支持 GLSL 3.30"?
- 为什么联机C++ IDE 不支持"graphics.h"头文件?
- Clang编译器不支持aarch64-apple-darwin上的-fxray-instrument
- 为什么我的 clang 格式不支持 PPDirectiveIndentStyle 选项?
- 为什么某些 STL 容器(堆栈、队列、优先级队列)不支持迭代器?
- 为什么不支持 Xcode 1.5?
- C++20 从括号中的值列表初始化聚合,不支持内部数组
- 为什么结构化绑定不支持可变数组?
- 您选择的 CPU 不支持 x86-64 指令集
- 将数据发送到多个客户端 UDP 时不支持地址族
- 缺少类型说明符 - 假定为 int.注意 c++ 不支持 default-int
- 瓦尔格林德"不支持arch_prctl选项"
- 错误:C4430:缺少类型说明符-假定为int.注意:C++不支持default-int
- 不支持 GLSL 330 内核
- 为什么Visual Studio 2019不支持用于减少Openmp的关键字"max"?