我知道如何从int的vector转换为string的向量
但是甚至可以从int的vector转换为const char *的vector吗? 似乎几乎不可能......
例如,以下代码将出错:
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;
}
它将在屏幕上打印以下内容: 3 3 3
答案 0 :(得分:0)
如果您需要std::vector
const char*
作为库函数的输入,您可以这样做。
#include <iostream>
#include <string>
#include <algorithm>
#include <iterator>
#include <vector>
#include <sstream>
void LibraryFunction(std::vector<const char*>& charVec)
{
for (size_t i = 0; i < 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); // your vector from before
std::vector<std::string> strVec;
strVec.reserve(vec.size());
std::transform(vec.begin(), vec.end(), std::back_inserter(strVec), to_string);
{ // use block to make sure charVec is removed before strVec.
std::vector<const char*> charVec;
charVec.reserve(strVec.size());
for (size_t i = 0; i < strVec.size(); ++i)
{
charVec.push_back(strVec[i].c_str());
}
LibraryFunction(charVec); // call your lib function here
} // now strVec can be safely removed.
}