Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将此变量添加到ifstream的路径中?_C++ - Fatal编程技术网

C++ 如何将此变量添加到ifstream的路径中?

C++ 如何将此变量添加到ifstream的路径中?,c++,C++,我试图附加我的路径,并包含一个变量作为路径的一部分,但我得到了一个错误 怎么了 fstream fin("E:\\Games\\maps\\" + this->MapNumber + ".map", ios::in|ios::binary|ios::ate); 此->地图编号为USHORT 错误:13 IntelliSense:表达式必须具有整数或非范围枚举类型 在C++中,不能使用++连接文字字符串。您可以将+与std::strings一起使用来连接它们,但这不适用于integer或其

我试图附加我的路径,并包含一个变量作为路径的一部分,但我得到了一个错误

怎么了

fstream fin("E:\\Games\\maps\\" + this->MapNumber + ".map", ios::in|ios::binary|ios::ate);
此->地图编号为USHORT

错误:13 IntelliSense:表达式必须具有整数或非范围枚举类型


C++中,不能使用
++
连接文字字符串。您可以将
+
std::string
s一起使用来连接它们,但这不适用于integer或其他类型。您需要使用流来代替。在流中插入和提取将导致支持它的类型将自己表示为文本,但您可能已经从常规I/O中了解到这一点

试试这样的方法:

std::stringstream filename;
filename << "E:\\Games\\maps\\" << this->MapNumber << ".map";

std::fstream fin(filename.str().c_str(), ios::in|ios::binary|ios::ate);
std::stringstream文件名;

filename不能对字符串和其他类型(如字符串)使用运算符+,因此您可以:

选项1:将所有变量转换为字符串以附加它们

string s = string("E:\\Games\\maps\\") + string(itoa(this->MapNumber)) + string(".map");
选项2:使用stringstream作为@k-ballo解释

选项3:使用好的旧C fprintf(我个人最喜欢的)


如果
此MapNumber
是一个数字,那么当然不能将其与
常量char*
连接起来。您可能需要做一些转换或使用<代码> STD::StrugStult。您可以得出结论,C++中可以将<代码> const char [n] < /COD>链接到<代码>未签名的短< /代码>,符号为代码>代码> +代码>,但这不是,也从来没有是真的。你用的是哪本?我不用书,只是用谷歌搜索我的方式through@Dean:可能包括
?@K-ballo:在单击“提交”之前进行开发。@LightnessRacesinOrbit:对不起,我喜欢从简单的基础开始,然后逐步改进我的答案……或者只做一个
std::string filename=“E:\\games\\maps\\”;filename=filename+this->MapNumber+“.map”;std::fstream fin(filename.c_str,…)-我想比创建一个stringstream只是为了得到一个字符串要轻一点。@MatsPeterson:你真的试过了吗?将插入数值为
MapNumber
的字符,而不是
MapNumber
的文本表示形式。
char str[100];
fprintf(str, "E:\\Games\\maps\\ %d .map", this->MapNumber);