我正在将我的所有char*更新为我的项目中的字符串,但我被困在这部分:
void Load(char* resourceName)
{
_fileReader.seekg(0);
while(_fileReader.tellg() < _FILE_SIZE)
{
int cResourceID = 0;
char* cResourceName = new char[_MAX_RESOURCE_NAME];
_fileReader.read((char*)&cResourceID, 4);
_fileReader.read((char*)cResourceName, _MAX_RESOURCE_NAME);
if(cResourceName == resourceName)
{
//Resource Found, do something
}
}
}
当我更改为字符串时,我得到:
void Load(string &resourceName)
{
_fileReader.seekg(0);
while(_fileReader.tellg() < _FILE_SIZE)
{
int cResourceID = 0;
string cResourceName;
_fileReader.read((char*)&cResourceID, 4);
//I don't know how to do this:
_fileReader.read((char*)cResourceName, _MAX_RESOURCE_NAME);
//And nor this:
if(cResourceName == resourceName)
{
//Resource Found, do something
}
}
}
因为我一直在阅读_MAX_RESOURCE_NAME字符,所以我的 char* 最终会像: "NAME !#$II#$II" (一堆未初始化的字符和/或空格)甚至比较(char* "NAME_ _ _" == string "NAME") 失败。
我可以像使用 char* 一样使用 ifstream 将 X 个字符读入字符串吗?
以及如何清除文件中的空格/未初始化字符以比较名称?
编辑:忘记添加它是一个二进制文件,我不能使用 std::getline()