Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将argv[1]转换为LPCVOID?_C++_Windows_Winapi - Fatal编程技术网

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

C++ 如何将argv[1]转换为LPCVOID?,c++,windows,winapi,C++,Windows,Winapi,我有一个C++实用程序,它接受argv[]参数。其中一个参数将由Windows API调用转换并用作内存地址,根据文档,该调用要求该地址为LPCVOID。我尝试了以下几点: int main(int argc, CHAR* argv[]) { if (argc < 3) { cout << "Arg1 and Arg2 are required."; exit(EXIT_FAILURE); } LPCVOID addr

我有一个
C++
实用程序,它接受
argv[]
参数。其中一个参数将由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;
}

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

这似乎解决了问题:

uintpttr\u\u\u地址;
std::stringstream-ss;
地址;
LPCVOID地址=(LPCVOID)u_地址;

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

这似乎解决了问题:

uintpttr\u\u\u地址;
std::stringstream-ss;
地址;
LPCVOID地址=(LPCVOID)u_地址;

您是指
argv[1]
的地址是那样还是内容是那样?能否显示创建流程时使用的命令行。我猜您是以文本形式传递地址的。@DavidHeffernan是的,我是以表示十六进制地址的文本字符串形式传递内存地址的。编辑我的问题以显示这一点。现在问题清楚了。您是指
argv[1]
的地址是那样还是内容是那样?您可以显示创建流程时使用的命令行吗。我猜您是以文本形式传递地址的。@DavidHeffernan是的,我是以表示十六进制地址的文本字符串形式传递内存地址的。编辑了我的问题以显示这一点。现在问题清楚了。我建议不要使用
unsigned int
来存储指针,64位代码将失败。使用
uintpttr\t
而不是固定答案。当我看到他的示例地址时没有想到这一点。您可以使用并将代码切成两半:
auto-const-address{std::stoull(argv[1],0,16)}
@IInspectable您应该使用
nullptr
而不是
0
作为空指针,使用
stoull
最好传入一个
pos
指针,这样您就可以检查它是否解析了整个字符串。我建议不要使用
unsigned int
来存储指针,但对于64位代码,它将失败。使用
uintpttr\t
而不是固定答案。当我看到他的示例地址时没有想到这一点。您可以使用并将代码切成两半:
auto-const-address{std::stoull(argv[1],0,16)}
@IInspectable您应该使用
nullptr
而不是
0
作为空指针,使用
stoull
最好传入
pos
指针,以便检查它是否已解析整个字符串
myprog.exe 161551C