我想获取本地 C++ 中位置内存指针指向的字符串的字符:
对于 C# 中的等效实现,它将是:
int positionMemory = getPosition();
long size = 10;
string result = Marshal.PtrToStringAnsi(new IntPtr(positionMemory), size);
如何在 C++ 中生成结果?
我想获取本地 C++ 中位置内存指针指向的字符串的字符:
对于 C# 中的等效实现,它将是:
int positionMemory = getPosition();
long size = 10;
string result = Marshal.PtrToStringAnsi(new IntPtr(positionMemory), size);
如何在 C++ 中生成结果?
我有一种感觉,这将导致问题在路上......
以下内容应该或多或少等同于您提供的 C# 片段,但结果字符串(存储在 中result
)仍将是 'ANSI' - 它不会像 C# 片段中那样扩展为 UNICODE。
int positionMemory = getPosition();
long size = 10;
std::string result( reinterpret_cast<const char *>(positionMemory), size);
请注意,size
字符将被放置在result
- 包括'/0'
字符中,因此如果您尝试将字符串传递给期望使用 C 样式的字符串,c_str()
您可能会得到一些意想不到的结果。
此外,关于使用 anint
作为指针的常见警告(特别是如果您希望它希望在 64 位系统上工作)适用。
假设“字符串”是一个char
s 序列,它位于内存positionMemory
中以空结尾表示的位置,您可以通过以下方式获得长度strlen
const char* str = static_cast<const char*>(positionMemory);
int length = strlen(str);
但是,从创建字符串的演示代码来看,这可能是您想要的,并且是更好的代码:
std::string result = static_cast<const char*>(positionMemory);
int length = result.length();