0

我正在为我的 Crysis Wars 服务器修改创建一个功能,该功能可以准确获取玩家所在的国家/地区。此信息用于为玩家定制服务器修改的前端(例如,如果玩家是德国人,则显示德语)。

我有这段代码,它应该可以正常工作,但没有(如果你想修复缩进,请编辑这篇文章):

int GetFileForCountry(const char *ip)
{
    if (!ip)
    {
        CryLogAlways("[ThunderBolt 7] Internal Error: No IP was defined.");
        return false;
    }
    char myUrl[255];
    CryLogAlways("1");
    sprintf(myUrl,"http://www.geoplugin.net/json.gp?ip=%s", (const char*)ip);
    CryLogAlways("2");
    CryLog("[ThunderBolt 7] Downloading file from source: %s", myUrl);
    CryLogAlways("3");
    const char *ch = gEnv->pConsole->GetCVar("sys_root")->GetString();
    CryLogAlways("4");
    const char *fLo = ("%sMods/Infinity/System/temp.txt",ch);
    CryLogAlways("5");
    std::wstring line;
    std::cout<<myUrl;
    CryLogAlways("6");
    getline(std::wcin,line);
    HRESULT hr;
    CryLogAlways("7");
    hr = URLDownloadToFile(NULL,(LPCSTR)line.c_str(),_T(fLo),0,NULL);
    CryLogAlways("8");
    return fLo;
}

该软件一直在崩溃(多个 CryLogAlways 背后的原因),我发现它在CryLog("[ThunderBolt 7] Downloading file from source: %s", myUrl);. 我不确定myUrl这是错误的声明,还是只是CryLogAlways. 我和我的一个 C++ '专家' 的伙伴谈过,他不知道哪里出了问题。

我还搜索了各种解决方案(对此代码进行了超过 5 次完整的替换),但没有一个有效。我以前用过这段代码,它工作得很好。

这不是那么紧急,但如果你能向我指出问题,请做:)。

4

1 回答 1

0

这里的问题是 C++ 将其视为两个不同的变量:

CryLog("[ThunderBolt 7] Downloading file from source: %s", myUrl);

CryLog函数只接受一个参数,因此存在问题。有很多方法可以解决这个问题,其中一种方法是:

CryLog(string("[ThunderBolt 7] Downloading file from source: ") + myUrl);
于 2014-11-02T23:09:53.717 回答