免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3562 | 回复: 5

[C++] 请教C++类型强制转换的问题 [复制链接]

论坛徽章:
0
发表于 2011-11-15 11:33 |显示全部楼层
  1. int main(int argc, char **argv)
  2. {
  3.         const char *ptr;
  4.         vector<uint64_t> pickle;
  5.        
  6.         for (Vec::size_type i = 1; i < 100; ++i)
  7.                 pickle.push_back(i);
  8.        

  9.        
  10.         ptr = reinterpret_cast<const char *>(pickle.data());
  11. }
复制代码
我把vector 转换为const char *
请问怎么把ptr 转换回vector ?

论坛徽章:
0
发表于 2011-11-15 11:59 |显示全部楼层
可以调用vector的构造函数:vector<char> pickle(ptr, ptr+strlen(ptr));

论坛徽章:
17
水瓶座
日期:2013-08-29 12:09:27白羊座
日期:2014-08-07 12:36:42丑牛
日期:2014-07-24 12:44:41寅虎
日期:2014-04-16 16:15:33寅虎
日期:2014-03-12 09:28:43摩羯座
日期:2014-03-06 13:22:04技术图书徽章
日期:2014-03-06 11:34:50天蝎座
日期:2014-01-09 11:31:44寅虎
日期:2013-12-27 17:01:44双子座
日期:2013-12-27 12:32:29双子座
日期:2013-12-25 09:03:33丑牛
日期:2013-12-24 16:18:44
发表于 2011-11-15 12:37 |显示全部楼层
  1. std::vector<char> v;            // create vector as dynamic array of chars

  2.    v.resize(41);                   // make room for 41 characters (including '\0')
  3.    strcpy(&v[0], "hello, world");  // copy a C-string into the vector
  4.    printf("%s\n", &v[0]);          // print contents of the vector as C-string
复制代码
引用自《The C++ Standard Library: A Tutorial and Reference》 6.2.3 Using Vectors as Ordinary Arrays

论坛徽章:
0
发表于 2011-11-15 14:41 |显示全部楼层
可以调用vector的构造函数:vector pickle(ptr, ptr+strlen(ptr));
digdeep126 发表于 2011-11-15 11:59



    但是我的 vector类型是uint64_t 不是 char

论坛徽章:
0
发表于 2011-11-15 17:07 |显示全部楼层
但是我的 vector类型是uint64_t 不是 char
我要思考 发表于 2011-11-15 14:41



    强制转换!

论坛徽章:
0
发表于 2011-11-16 19:10 |显示全部楼层
vector<uint64_t>& pickle_ref = reinterpret_cast<vector<uint64_t>&>(ptr);
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP