c++ - How to convert a vector of int to vector of const char* -
i know how convert vector of int vector of string
but possible convert vector of int vector of const char*? seems impossible...
for example, following code wrong:
int n=3; vector<int> vec; for(int i=1;i<=n;i++){vec.push_back(i);} vector<const char*> chararray; for(int i=0;i<vec.size();i++) { std::string s = std::to_string(vec[i]); chararray.push_back( s.c_str() ); } for( int i=0;i<chararray.size();i++) { cout<<chararray[i]<<endl; }
it print following on screen: 3 3 3
if need std::vector
of const char*
input library function, can this.
#include <iostream> #include <string> #include <algorithm> #include <iterator> #include <vector> #include <sstream> void libraryfunction(std::vector<const char*>& charvec) { (size_t = 0; < charvec.size(); ++i) { std::cout << charvec[i] << " "; } } std::string to_string(int i) { std::stringstream ss; ss << i; return ss.str(); } int main() { int arr[] = { 1,2,3 }; std::vector<int> vec(arr, arr + 3); // vector before std::vector<std::string> strvec; strvec.reserve(vec.size()); std::transform(vec.begin(), vec.end(), std::back_inserter(strvec), to_string); { // use block make sure charvec removed before strvec. std::vector<const char*> charvec; charvec.reserve(strvec.size()); (size_t = 0; < strvec.size(); ++i) { charvec.push_back(strvec[i].c_str()); } libraryfunction(charvec); // call lib function here } // strvec can safely removed. }
Comments
Post a Comment