gpt4 book ai didi

c++ - 将 void* 转换为 std::string

转载 作者:IT老高 更新时间:2023-10-28 12:53:44 26 4
gpt4 key购买 nike

在浏览了网络并弄乱了自己之后,我似乎无法将 void* 的目标(它是一个字符串)转换为 std::string。我试过使用 sprintf(buffer, "%p", *((int *)point)); 推荐的 this page得到一个C字符串,但无济于事。可悲的是,是的,我必须使用 void*,因为这就是 SDL 在其 USEREVENT 结构中使用的内容。

对于那些感兴趣的人,我用来填充 Userevent 的代码是:

std::string filename = "ResumeButton.png";
SDL_Event button_press;
button_press.type = BUTTON_PRESS;
button_press.user.data1 = &filename;
SDL_PushEvent(&button_press);

有什么想法吗?

编辑:感谢所有回复,我只需要将 void* 转换为 std::string*。傻我。非常感谢你们!

最佳答案

您只需要动态分配它(因为它可能需要超过您使用它的范围),然后来回转换:

// Cast a dynamically allocated string to 'void*'.
void *vp = static_cast<void*>(new std::string("it's easy to break stuff like this!"));

// Then, in the function that's using the UserEvent:
// Cast it back to a string pointer.
std::string *sp = static_cast<std::string*>(vp);
// You could use 'sp' directly, or this, which does a copy.
std::string s = *sp;
// Don't forget to destroy the memory that you've allocated.
delete sp;

关于c++ - 将 void* 转换为 std::string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3076968/

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