[英]How to cast void* to vector<char *>?
有一个函数需要void*
传递我的vector<char*>
后,如何将其转换回vector<char*>
并使用 C++ 中的转换打印其内容?
例子:
void testFunction(void* data){
//cast data back to vector<char *> and print its content
}
int main()
{
std::vector<char *> arg(1);
std::string someString = "testString";
arg[0] = (char *)someString.c_str();
testFunction(&arg);
return 0;
}
您可以使用static_cast
将void*
指针转换为几乎任何其他类型的指针。 以下代码适用于我:
void testFunction(void* data)
{
std::vector<char*>* vecdata = static_cast<std::vector<char*>*>(data);
for (auto c : *vecdata) std::cout << c;
std::cout << std::endl;
}
只需使用reinterpret_cast
vector<char*>* parg = reinterpret_cast<vector<char*>*>(data);
char* mystr = parg->at(0);
std::vector<char*>& myVec= *reinterpret_cast<std::vector<char*>*>(data);
std::cout<<myVec[0];
好吧,实际上这有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.