我有一个包含地址的ULONG值。
地址基本上是字符串(以NULL字符结尾的wchar_t数组)
我想检索那个字符串。
最好的方法是什么?
答案 0 :(得分:7)
@KennyTM的回答是正确的,如果“基本上是一个字符串”,你的意思是它是一个指向std::string
类实例的指针。如果你的意思是它是指向C字符串的指针,我怀疑它可能更有可能,你需要:
char *s = reinterpret_cast<char *>(your_ulong);
或者,在您的情况下:
whcar_t *s = reinterpret_cast<wchar_t *>(your_ulong);
另请注意,您无法安全地将指针存储在任何旧的整数类型中。我可以使用32位long
类型和64位指针类型编译。如果您的编译器支持它,那么以整数存储指针的正确方法是使用stdint.h
类型intptr_t
和uintptr_t
,这些类型(通过C99标准)保证足够大存储指针类型。
但是,C99不是C ++的一部分,许多C ++编译器(读取:Microsoft)可能不提供这种功能(因为谁需要编写可移植代码?)。幸运的是,stdint.h
非常有用,可以使用变通方法,并且可以在互联网上轻松找到stdint.h
与旧版编译器兼容的可移植(和免费)实现。
答案 1 :(得分:3)
string& s = *reinterpret_cast<string*>(your_ulong);