崩溃:字符串问题

Crash: String Issues?

本文关键字:问题 字符串 崩溃      更新时间:2023-10-16

我正在为我的孤岛危机战争服务器修改创建一个功能,可以准确地获得玩家的国家。此信息用于为播放器定制服务器修改的前端(例如,如果播放器是德语,则显示德语)。

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

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 次完整的替换),但没有一个奏效。我以前使用过这段代码,它工作正常。

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

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

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

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

CryLog(string("[ThunderBolt 7] Downloading file from source: ") + myUrl);