关于将vector以及string传递给较老的api的问题

  现在可能STL使用的越来越多,但是一些较老的api并不支持例如vector这样的兑现,但是可以使用一些技巧来使其适应于这些函数。

  例如对于使用到int*型的函数来说,传入一个 &vector[1],是完全可以的,再比如说C语言经常使用到的memcpy,下面的使用也是可以的:

1 vector<int> nums{1,2,3};
2 int arr[3];
3 memcpy(arr, &nums[0], 3 * sizeof(int));

  这是因为vector保证了其中的内容是存放再连续的内存空间中的。

  但是可惜的是string不会做出这种保证,所以想要和较老的使用const char *相兼容的话使用 string.c_str(),才可以。

posted @ 2016-01-19 16:52  eversliver  阅读(200)  评论(0编辑  收藏  举报