假设我有一个 vector<string> input
我需要将它传递给一个接受 const char**
的函数争论。我的想法是使用 unique_ptr
像这样:
const auto output = make_unique<char*>(size(input));
但我似乎无法转 const unique_ptr<const*>
进入const char**
.有没有办法实现这一目标,或者是否有更简单的替代方案?
最佳答案
我只是构建一个指向字符串的 c_str()
的指针 vector ,然后获取指向它的指针。
std:vector<const char*> pointers;
pointers.reserve(input.size());
for (const auto& e : input)
pointers.push_back(e.c_str()); // get const char *'s
auto argument = pointers.data(); // get pointer to const char*'s - const char**
或者使用unique_ptr
auto pointers = std::make_unique<const char*[]>(size(input))
for (size_t i = 0; i < input.size(); ++i)
pointers[i]= input[i].c_str(); // get const char *'s
auto argument = pointers.get(); // get pointer to const char*'s - const char**
关于c++ - 使用 unique_ptr 的常量字符指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51365365/