我有以下代码:
int _tmain(int argc, char** argv) {
bool g_graphics = true;
palPhysics * pp = 0;
#ifndef PAL_STATIC
PF -> LoadPALfromDLL();
#endif
char a[] = "Bullet";
std::string aa;
aa = std::string(argv[1]);
//PF->SelectEngine("Bullet");
DebugBreak();
PF -> SelectEngine(argv[1]);
//PF->SelectEngine(aa);
//debug
// assert(false);
pp = PF -> CreatePhysics();
}
我正在尝试读取命令行参数号。1 在这一行:
PF->SelectEngine(argv[1]);
但是,我只得到论点的第一个字母。我也试过改变
int _tmain(int argc, char** argv)
至
int _tmain(int argc, TCHAR** argv), but then I get
错误:
error C2664: 'palFactory::SelectEngine' : cannot convert parameter 1 from 'TCHAR *' to 'const PAL_STRING &'
PAL_STRING 只是一个 std::string。
这可能很简单,但我不确定如何将 TCHAR 转换为 std::string,尤其是因为 TCHAR 取决于编译器/环境设置。有没有人知道让命令行参数工作的简单方法,这样我就不需要自己转换任何东西,即可能通过更改 tmain 函数?
谢谢!
C
更新:在命令行上调用的示例:
是的。所以我在命令行上调用它的方式是:
progname.exe arg1 arg2,
其中 arg1 是我要加载的物理引擎,而 arg2 是 dae(带有物理信息的物理文件),所以我去,具体来说:
progname.exe 项目符号 E:/a.dae
进入“PF->SelectEngine(argv[1]);”行 给出以下代码:
bool palFactory::SelectEngine(const PAL_STRING& name) {
#ifdef INTERNAL_DEBUG
printf("palFactory::SelectEngine: this = %p\n", this);
#endif
SetActiveGroup(name); // also calls RebuildRegistry
return isClassRegistered("palPhysics");
}
,在这种情况下,在调试时,我可以看到 const PAL_STRING& 名称,即字符串,只是“B”,而不是我所期望的,即“Bullet”,我传入的命令行参数命令行。