我正在尝试附加我的路径并包含一个变量作为路径的一部分,但出现错误。
它出什么问题了?
fstream fin("E:\\Games\\maps\\" + this->MapNumber + ".map", ios::in|ios::binary|ios::ate);
this->MapNumber 是一个 USHORT
错误:13 IntelliSense:表达式必须具有整数或无范围枚举类型
我正在尝试附加我的路径并包含一个变量作为路径的一部分,但出现错误。
它出什么问题了?
fstream fin("E:\\Games\\maps\\" + this->MapNumber + ".map", ios::in|ios::binary|ios::ate);
this->MapNumber 是一个 USHORT
错误:13 IntelliSense:表达式必须具有整数或无范围枚举类型
在C++中,您不能使用+
连接文字字符串。您可以使用+
with std::string
s 来连接它们,但这不适用于整数或其他类型。您需要改用流。插入和提取到流中会导致支持它的类型将自己表示为文本,但您可能已经从一般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
,您需要包含<sstream>
.
您不能在字符串和其他类型(如字符串)上使用 operator+ 或者您可以:
选项1:将所有变量转换为字符串以附加它们
string s = string("E:\\Games\\maps\\") + string(itoa(this->MapNumber)) + string(".map");
选项2:使用字符串流作为@k-ballo 解释
选项3:使用旧的 C fprintf(我个人最喜欢的)
char str[100];
fprintf(str, "E:\\Games\\maps\\ %d .map", this->MapNumber);