关于将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(),才可以。