Hi,
This is my first post so please be nice. I searched in this forum and googled but I still can not find the answer. This problem has bothered me for more than a day, so please give me some help. Thank you.
I need to pass a vector of string to a library function foo(char const *const *const). I can not pass the &Vec[0] since it's a pointer to a string. Therefore, I have an array and pass the c_str() to that array. The following is my code (aNames is the vector of string):
const char* aR[aNames.size()];
std::transform(aNames.begin(), aNames.end(), aR,
boost::bind(&std::string::c_str, _1));
foo(aR);
However, it seems it causes some undefined behavior:
If I run the above code, then the function foo throw some warnings about illegal characters ('èI' blablabla) in aR.
If I print aR before function foo like this:
std::copy(aR, aR+rowNames.size(),
std::ostream_iterator<const char*>(std::cout, "\n"));
foo(aR);
Then, everything is fine.
My questions are:
Does the conversion causes undefined behavior? If so, why?
What is the correct way to pass vector of string to foo(char const *const *const)?
Thank you very much for your help!