如何将 int 的向量转换为常量字符*的向量
How to convert a vector of int to vector of const char*
我知道如何从 int 向量转换为字符串向量
但是甚至有可能从 int 向量转换为常量字符*向量吗?似乎几乎不可能...
例如,以下代码将是错误的:
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;
}
它将在屏幕上打印以下内容:333
如果您需要const char*
的std::vector
作为库函数的输入,则可以这样做。
#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.
}
相关文章:
- 为什么C++常量模板化向量在使用之前没有初始化?
- 如何返回向量的常量引用?
- 初始化指针的常量向量
- 将编译时常量向量转换为堆分配版本
- 在<uint8_t> <char> c++ 中将常量向量转换为常量向量
- 无法在声明时使用初始值设定项列表初始化常量字符*/字符串数组的向量
- C++ 获取向量中常量字符* [ ] 的长度
- 如何在 c++ 中将向量转换为<string>常量字符* const*?
- 当类具有常量时,将对象插入到向量中
- C++模板,用于通过常量引用和原始指针传递向量
- 对向量<常量字符 *> 进行排序
- 非常量对象的向量似乎在基于范围的 for 循环中被视为常量
- 对常量向量进行常量unique_ptr
- C++向量迭代:常量 vs. 常量自动 vs. 无常量
- 传递具有常量内容的向量
- 返回对私有向量成员元素的非常量引用是否是一种不好的做法
- 常量向量中的非常量
- 静态常量 std::<char>没有堆的向量初始化?
- 如果方法是常量,如何找到向量的中位数?
- 如何将智能指针向量转换为常量向量,该常量向量包含指向常量的智能指针