关于将vector以及string传递给较老的api的问题
2016-01-19 16:52
253 查看
现在可能STL使用的越来越多,但是一些较老的api并不支持例如vector这样的兑现,但是可以使用一些技巧来使其适应于这些函数。
例如对于使用到int*型的函数来说,传入一个 &vector[1],是完全可以的,再比如说C语言经常使用到的memcpy,下面的使用也是可以的:
这是因为vector保证了其中的内容是存放再连续的内存空间中的。
但是可惜的是string不会做出这种保证,所以想要和较老的使用const char *相兼容的话使用 string.c_str(),才可以。
例如对于使用到int*型的函数来说,传入一个 &vector[1],是完全可以的,再比如说C语言经常使用到的memcpy,下面的使用也是可以的:
vector<int> nums{1,2,3}; int arr[3]; memcpy(arr, &nums[0], 3 * sizeof(int));
这是因为vector保证了其中的内容是存放再连续的内存空间中的。
但是可惜的是string不会做出这种保证,所以想要和较老的使用const char *相兼容的话使用 string.c_str(),才可以。
相关文章推荐
- 如何查看Windows激活信息
- 拦截器的方法介绍(三)
- ios已上架的APP更新,使用core data的需要升级core Data数据库,这样做
- 15 个必知的 Android 开发者选项
- 检查Mac电脑是32位还是64位运行以及修改方法
- C++经典面试题
- ERROR 1820 (HY000): You must SET PASSWORD before executing this
- 安卓APP动态调试技术
- 正态分布的生成
- DFRobot的产品
- iOS:删除已经配置的类库和移除CocoaPods
- 1月19号 TextField
- MVC缓存OutPutCache学习笔记 (三) 缓存局部刷新
- linux 如何查看防火墙是否开启
- 所有类的超类:Object类
- 很好文章
- 视频采集处理之YUV数据格式
- ImageTarget识别物体脱离识别案例
- git概念、原理、使用
- Node定义