我正在创建一个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次以上完全替换),但它们都没有奏效。我之前使用过这段代码并且工作正常。
这不是那么紧急,但如果你能指出我的问题,请做:)。
答案 0 :(得分:0)
这里的问题是C ++将其视为两个不同的变量:
CryLog("[ThunderBolt 7] Downloading file from source: %s", myUrl);
CryLog
函数只接受一个参数,因此存在问题。
有很多方法可以解决这个问题,其中一种方法是:
CryLog(string("[ThunderBolt 7] Downloading file from source: ") + myUrl);