ghi*_*boz 5 c++ string casting void void-pointers
我使用一个具有回调函数的库,其中一个参数是类型void *
.(我想让我们发送任何类型的价值.)
我需要传递一个字符串(std::string
或者char[]
是一个相同的).
我怎样才能做到这一点?
如果您确定该对象在函数的生命周期内是活动的(并且可以被修改),则可以对字符串指针进行强制转换,然后将其转换回回调中的引用:
#include <iostream>
#include <string>
void Callback(void *data) {
std::string &s = *(static_cast<std::string*>(data));
std::cout << s;
}
int main() {
std::string s("Hello, Callback!");
Callback( static_cast<void*>(&s) );
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出是 Hello, Callback!
如果你有一个char数组,那么它可以隐式转换为void指针.如果您有C++字符串,则可以获取第一个元素的地址:
void f(void *); // example
#include <string>
int main()
{
char a[] = "Hello";
std::string s = "World";
f(a);
f(&s[0]);
}
Run Code Online (Sandbox Code Playgroud)
确保std::string
函数调用表达式的寿命更长.
归档时间: |
|
查看次数: |
15853 次 |
最近记录: |