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);