如何从地址获取字符串?

ana*_*and 2 c++

我有一个包含地址的ULONG值.

地址基本上是字符串(以NULL字符结尾的wchar_t数组)

我想要检索该字符串.

最好的方法是什么?

Chr*_*utz 7

@KennyTM的回答是正确的,如果"基本上是一个字符串",你的意思是它是一个指向std::string类实例的指针.如果你的意思是它是一个指向C字符串的指针,我怀疑它可能更有可能,你需要:

char *s = reinterpret_cast<char *>(your_ulong);
Run Code Online (Sandbox Code Playgroud)

或者,在您的情况下:

whcar_t *s = reinterpret_cast<wchar_t *>(your_ulong);
Run Code Online (Sandbox Code Playgroud)

另请注意,您无法安全地将指针存储在任何旧的整数类型中.我可以使用32位long类型和64位指针类型编译.如果你的编译器支持它,存储在指针为整数,正确的方法是使用stdint.h类型intptr_tuintptr_t,这些都保证(由C99标准)必须足够大,以存储指针类型.

但是,C99不是C++的一部分,许多C++编译器(读取:Microsoft)可能不提供这种功能(因为谁需要编写可移植代码?).幸运的是,stdint.h存在变通方法非常有用,并且stdint.h可以在Internet上轻松找到与旧编译器兼容的可移植(和免费)实现.