#include <vector>
#include <string>
#include <iostream>
void legacy_function(char **myList)
{
for (int i = 0; myList[i]; ++i)
std::cout << myList[i] << "\n";
}
using namespace std;
int main()
{
vector<string> myVector;
myVector.push_back("first");
myVector.push_back("second");
//...
// create the pointer vector
vector<char *> myPtrVector;
// add pointer to string to vector
for (size_t i = 0; i < myVector.size(); ++i)
myPtrVector.push_back(const_cast<char*>(myVector[i].c_str()));
// stick the null at the end
myPtrVector.push_back(NULL);
// ...
// call legacy function
legacy_function(&myPtrVector[0]);
}
ICAgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8dmVjdG9yPgogICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDxzdHJpbmc+CiAgICAgICAgICAgICAgICAgICAgI2luY2x1ZGUgPGlvc3RyZWFtPgogICAgIAogICAgICAgICAgICAgICAgICAgIHZvaWQgbGVnYWN5X2Z1bmN0aW9uKGNoYXIgKipteUxpc3QpIAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgbXlMaXN0W2ldOyArK2kpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6Y291dCA8PCBteUxpc3RbaV0gPDwgIlxuIjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgCiAgICAgICAgICAgICAgICAgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKICAgICAgICAgICAgICAgICAgICBpbnQgbWFpbigpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3I8c3RyaW5nPiBteVZlY3RvcjsKICAgICAgICAgICAgICAgICAgICAgICAgbXlWZWN0b3IucHVzaF9iYWNrKCJmaXJzdCIpOwogICAgICAgICAgICAgICAgICAgICAgICBteVZlY3Rvci5wdXNoX2JhY2soInNlY29uZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAvLy4uLgogICAgICAgICAgICAgICAgICAgICAgICAvLyBjcmVhdGUgdGhlIHBvaW50ZXIgdmVjdG9yCiAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvcjxjaGFyICo+IG15UHRyVmVjdG9yOwogICAgICAgICAgICAgICAgICAgICAgICAvLyBhZGQgcG9pbnRlciB0byBzdHJpbmcgdG8gdmVjdG9yCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbXlWZWN0b3Iuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG15UHRyVmVjdG9yLnB1c2hfYmFjayhjb25zdF9jYXN0PGNoYXIqPihteVZlY3RvcltpXS5jX3N0cigpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0aWNrIHRoZSBudWxsIGF0IHRoZSBlbmQKICAgICAgICAgICAgICAgICAgICAgICAgbXlQdHJWZWN0b3IucHVzaF9iYWNrKE5VTEwpOwogICAgICAgICAgICAgICAgICAgICAgICAvLyAuLi4KICAgICAKICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBsZWdhY3kgZnVuY3Rpb24KICAgICAgICAgICAgICAgICAgICAgICAgbGVnYWN5X2Z1bmN0aW9uKCZteVB0clZlY3RvclswXSk7CiAgICAgICAgICAgICAgICAgICAgfQ==