Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.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++ 从向量加载所有元素_C++ - Fatal编程技术网

C++ 从向量加载所有元素

C++ 从向量加载所有元素,c++,C++,所以这些代码是游戏的一部分。资源路径的加载存储在向量中,并由指定的mob vnum加载 例如: If (vnum === 99) std::string = "Path/path/vnum_99_folder" 这是我的密码 void GetRaceResourcePathes(unsigned vnum, std::vector <std::string> &vec_stPathes) { if (vnum >= 30000) {

所以这些代码是游戏的一部分。资源路径的加载存储在向量中,并由指定的mob vnum加载

例如:

If (vnum === 99)
    std::string = "Path/path/vnum_99_folder"
这是我的密码

void GetRaceResourcePathes(unsigned vnum, std::vector <std::string> &vec_stPathes)
{
    if (vnum >= 30000)
    {
        vec_stPathes.push_back("d:/work/npc2/");
        vec_stPathes.push_back("d:/work/npc/");
        vec_stPathes.push_back("d:/work/monster/");
        vec_stPathes.push_back("d:/work/monster2/");
    }
    else
    {
        vec_stPathes.push_back("d:/work/npc/");
        vec_stPathes.push_back("d:/work/npc2/");
        vec_stPathes.push_back("d:/work/monster/");
        vec_stPathes.push_back("d:/work/monster2/");
    }
}
void GetRaceResourcePaths(未签名的vnum、std::vector和vec_stpaths)
{
如果(vnum>=30000)
{
vec stPathes.推回(“d:/work/npc2/”;
vec stPathes.推回(“d:/work/npc/”;
vec stPathes.向后推(“d:/work/monster/”;
vec stPathes.向后推(“d:/work/monster2/”;
}
其他的
{
vec stPathes.推回(“d:/work/npc/”;
vec stPathes.推回(“d:/work/npc2/”;
vec stPathes.向后推(“d:/work/monster/”;
vec stPathes.向后推(“d:/work/monster2/”;
}
}
上面的代码带有资源路径,存储在向量中。。然后返回大小和加载路径

这里是哪里

CRaceData* CRaceManager::LoadRaceData(DWORD vnum)
{
    auto fRaceName = m_kMap_dwRaceKey_stRaceName.find(vnum);

    if (m_kMap_dwRaceKey_stRaceName.end() == fRaceName)
    {
        return NULL;
    }

    auto &c_rstRaceName = fRaceName->second;

    if (c_rstRaceName.empty())
    {
        return NULL;
    }

    std::vector <std::string> vec_stFullPathName;
    GetRaceResourcePathes(vnum, vec_stFullPathName);

    CRaceData* pRaceData = CRaceData::New();
    pRaceData->SetRace(vnum);

    for (int i = 0; i < vec_stFullPathName.size(); i++)
    {
        std::string stFullPathName = vec_stFullPathName[i];
        {
            auto RaceSrcName = m_kMap_stRaceName_stSrcName.find(c_rstRaceName);

            if (m_kMap_stRaceName_stSrcName.end() == RaceSrcName)
            {
                stFullPathName += c_rstRaceName;
            }
            else
            {
                stFullPathName += RaceSrcName->second;
            }
        }

        stFullPathName += "/";
        std::string stMSMFileName = stFullPathName + c_rstRaceName + ".msm";

        if (!pRaceData->LoadRaceData(stMSMFileName.c_str()))
        {
            if (i != vec_stFullPathName.size() - 1)
            {
                TraceError("CRaceManager::RegisterRacePath : vnum[%u] LOAD MSMFILE[%s] ERROR. Will Find Another Path.", vnum, stMSMFileName.c_str());
                continue;
            }

            TraceError("CRaceManager::RegisterRacePath : vnum[%u] LOAD MSMFILE[%s] ERROR", vnum, stMSMFileName.c_str());
            CRaceData::Delete(pRaceData);
            return NULL;
        }

        std::string stMotionListFileName = stFullPathName;
        stMotionListFileName += pRaceData->GetMotionListFileName();

        LoadRaceMotionList(*pRaceData, stFullPathName.c_str(), stMotionListFileName.c_str());
        return pRaceData;
    }

    TraceError("CRaceManager::RegisterRacePath : vnum[%u] HAVE NO PATH ERROR", vnum);
    CRaceData::Delete(pRaceData);
    return NULL;
}
CRaceData*CRaceManager::LoadRaceData(DWORD vnum)
{
自动fRaceName=m_kMap_dwRaceKey_stRaceName.find(vnum);
if(m_kMap_dwRaceKey_stRaceName.end()==fRaceName)
{
返回NULL;
}
自动&CrstraceName=fRaceName->second;
if(c_rstRaceName.empty())
{
返回NULL;
}
std::向量向量向量路径名;
GetRaceResourcePaths(vnum、vec_stFullPathName);
CRaceData*pRaceData=CRaceData::New();
pRaceData->SetRace(vnum);
对于(int i=0;isecond;
}
}
stFullPathName+=“/”;
std::string stMSMFileName=stFullPathName+crstraceName+“.msm”;
如果(!pRaceData->LoadRaceData(stMSMFileName.c_str()))
{
如果(i!=vec\u stFullPathName.size()-1)
{
TraceError(“CRaceManager::RegisterRacePath:vnum[%u]加载MSMFILE[%s]错误。将找到另一个路径。”,vnum,stMSMFileName.c_str());
继续;
}
TraceError(“CRaceManager::RegisterRacePath:vnum[%u]加载MSM文件[%s]错误”,vnum,stMSMFileName.c_str());
CRaceData::删除(pRaceData);
返回NULL;
}
std::string stMotionListFileName=stFullPathName;
stMotionListFileName+=pRaceData->GetMotionListFileName();
LoadRaceMotionList(*pRaceData,stFullPathName.c_str(),stMotionListFileName.c_str());
返回pRaceData;
}
TraceError(“CRaceManager::RegisterRacePath:vnum[%u]没有路径错误”,vnum);
CRaceData::删除(pRaceData);
返回NULL;
}
我想删除那些vnum==检查。。并同时加载所有路径。。不指定vnum

void GetRaceResourcePathes(unsigned vnum, std::vector <std::string> &vec_stPathes)
{
    vec_stPathes.push_back("d:/work/npc/");
    vec_stPathes.push_back("d:/work/npc2/");
    vec_stPathes.push_back("d:/work/monster/");
    vec_stPathes.push_back("d:/work/monster2/");
}
void GetRaceResourcePaths(未签名的vnum、std::vector和vec_stpaths)
{
vec stPathes.推回(“d:/work/npc/”;
vec stPathes.推回(“d:/work/npc2/”;
vec stPathes.向后推(“d:/work/monster/”;
vec stPathes.向后推(“d:/work/monster2/”;
}
如果我像上面那样更改
GetRaceResourcePaths
,将只加载第一行。。。“work/npc/”其他3个被忽略


怎么了?为什么不加载所有4条路径?

您的线路:

return pRaceData;
从for循环内部返回。因此,循环在第一次迭代后不会继续,而
LoadRaceData
函数将返回第一次加载的结果。

您的行:

return pRaceData;

从for循环内部返回。因此,循环在第一次迭代后不会继续,而
LoadRaceData
函数将返回第一次加载的结果。

“出了什么问题?为什么没有加载所有4条路径?”-这个答案解释了问题-至于代码实际要做什么,这是一个不同的问题,如果没有更多关于你的问题的信息,这个问题很难回答。我现在将尝试做4个循环,每个循环都有一个路径“怎么了?为什么不加载所有4个路径?”-这个答案解释了问题-至于代码实际要做什么,这是一个不同的问题,如果没有更多关于你的问题的信息,这个问题很难回答。现在我将尝试做4个循环,每个循环都有一条路径