如何将 argv[1] 转换为 LPCVOID?

How to convert argv[1] to LPCVOID?

本文关键字:转换 LPCVOID argv      更新时间:2023-10-16

我有一个接受argv[]参数的C++实用程序。其中一个参数是由 Windows API 调用转换并用作内存地址,该调用需要根据文档LPCVOID此地址。我尝试了以下方法:

int main(int argc, CHAR* argv[])
{
if (argc < 3) {
cout << "Arg1 and Arg2 are required.";
exit(EXIT_FAILURE);
}
LPCVOID address = (LPCVOID)argv[1];
cout << address;
// some other stuff here
return 0;
}

但是,地址未正确使用,上面的cout语句将转换后的地址打印为01297FFAargv[1]161551C输入时。任何关于解决此问题的帮助将不胜感激。

编辑以包含我执行的命令:

myprog.exe 161551C

必须将argv[1]指向的字符串转换为整数表示形式,然后将整数强制转换为 LPCVOID 指针。

这里似乎解决了问题:

uintptr_t u_adress;   
std::stringstream ss;
ss << std::hex << argv[1];
ss >> u_adress;
LPCVOID address = (LPCVOID)u_adress;