gpt4 book ai didi

c++ - 如何将 ULONG64 转换为 PCSTR?

转载 作者:太空宇宙 更新时间:2023-11-04 16:29:04 25 4
gpt4 key购买 nike

我对 C++ 很陌生,因为我通常使用 C#。

这是我目前使用的代码(尽管我已经尝试了很多其他的东西):

template <class T>
inline PCSTR to_string (const T& t)
{
std::stringstream ss;
ss << t;
return ss.str().c_str();
}



ULONG bugCheckCode = 0;
ULONG64 bugCheckArgs[4] = {0};
Control->ReadBugCheckData(&bugCheckCode, &bugCheckArgs[0], &bugCheckArgs[1], &bugCheckArgs[2], &bugCheckArgs[3]);

CHAR arg2[sizeof(bugCheckArgs[1])];
ZeroMemory(arg2, sizeof(bugCheckArgs[1]));

memcpy(arg2, &bugCheckArgs[1], sizeof(bugCheckArgs[1]));

Control->CallExtension(NULL, "function", arg2);

基本上,ReadBugCheckData 返回一个 PULONG64,我给它一个 ULONG64 的地址。我很确定这一点没问题,但由于我对所有这些内存东西都是新手,所以我会发布它以防错误出在这里。

所以我现在有一个 ULONG64(typedef unsigned long long ULONG64),我需要将其转换为 PCSTR(typedef CONST CHAR *PCSTR),如果我理解正确的话,它是一个 char 数组???所以我尝试了代码片段顶部的 to_string 函数,我尝试了 memcpy,但我无法让它工作。

但我所能得到的只是虚无或垃圾数据。我发现这特别难以调试,因为这是一个扩展,我无法正确地逐步执行代码。

关于如何进行这种转换有什么想法吗?

非常感谢。

最佳答案

这段代码:

template <class T>
inline PCSTR to_string (const T& t)
{
std::stringstream ss;
ss << t;
return ss.str().c_str();
}

返回一个指向内存的指针,该内存由 str() 返回的临时内存拥有,因此一旦函数退出就会被销毁。而是使用:

template <class T>
inline std::string to_string (const T& t)
{
std::stringstream ss;
ss << t;
return ss.str();
}

然后在调用站点检索 const char* 为:

CallSomething(to_string(x).c_str());

关于c++ - 如何将 ULONG64 转换为 PCSTR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9045767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com