关于C++ifstream第一个参数的问题

string s = "E:\" + id + ""+".txt";
ifstream(s);

其中id是字符串类型的变量,为什么不能正确打开文件?怎么才能正确打开?求教!

ifstream in(s);
上面打错了

这个字符串不完全,编译通不过吧
字符串常量不能进行+运算
只能拼接
"E:\" + id + " 是一个字符串
"+" 是一个字符串
.txt"不是一个字符串
因此这个字符串不完整,不是一个字符串
string s = "E:\" + id + ""+".txt"; 编译不了

char *没有重载过+,不能直接用+实现字符串拼接,都转换成string才行。
不如使用sprintf格式化写入

 #include<iostream>
#include<fstream>
#include<string>
using namespace std;
void main()
{
    char path[32] = {0};
    int id = 5;
    sprintf(path, "E:\\%d.txt", id);
    cout << path << endl;
}