zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C++之vector<char>与void*相互转换(八十九)

C++转换 相互 vector char void
2023-09-14 09:09:57 时间

1.代码示例  

#include <iostream>
#include <vector>
#include <time.h>
#include <string.h>
#include <typeinfo>
using namespace std;

void *do_work(void *buf){
	//1.void* ---> vector<char*>
	vector<char>* p = (vector<char>*)(buf);
	printf("xxx---->%s(), line = %d, p->data() = %s, p->size() = %ld\n",__FUNCTION__,__LINE__,p->data(),p->size());

	//2.void* ---> vector<char*>
	vector<char>* pt = static_cast<vector<char>*>(buf);
	printf("xxx---->%s(), line = %d, pt->data() = %s, pt->size() = %ld\n",__FUNCTION__,__LINE__,pt->data(),pt->size());
}

int main(){
	pthread_t td;
  char buffer[] = "Hello anbox.";
  vector<char> data(buffer, buffer + strlen(buffer));

	printf("data.data() = %s\n",data.data());

  //1.vector<char> ---> void*
	pthread_create(&td,NULL,do_work, (void*)(&data));

	//2.vector<char> ---> void*
	//pthread_create(&td,NULL,do_work, static_cast<void*>(&data));
	pthread_join(td, NULL);
}