崩溃:字符串问题?

时间:2013-10-20 10:02:39

标签: c++

我正在创建一个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次以上完全替换),但它们都没有奏效。我之前使用过这段代码并且工作正常。

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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