繁体   English   中英

如何将 void* 转换为向量<char *> ?

[英]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_castvoid*指针转换为几乎任何其他类型的指针。 以下代码适用于我:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM