如何从地址获取字符串?

时间:2010-02-04 07:11:03

标签: c++

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

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

我想检索那个字符串。

最好的方法是什么?

2 个答案:

答案 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_tuintptr_t,这些类型(通过C99标准)保证足够大存储指针类型。

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

答案 1 :(得分:3)

string& s = *reinterpret_cast<string*>(your_ulong);