c++ - 使用 unique_ptr 的常量字符指针

标签 c++ unique-ptr c-strings char-pointer const-char

假设我有一个 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/

相关文章:

c++ - 编译用于ARM64-v8a的Tensorflow C++ API

c++ - 使用 std::unique_ptr 反转二叉树

c++ - 删除 unique_ptr 指向的内容

c - 根据长度崩溃对静态数组中的字符串进行排序? |错误分配/访问|

c++ - 使用 char* 存储正确的文件路径

c++ - 如何构造一个由 double 和 ""组成的字符串,然后将其作为 const char* 提供给 cMessage 构造函数?

c++ - libcurl下载速度太慢

c++ - MFC 程序中的堆损坏

c++ - std::unique_ptr<T[]> 和自定义分配器删除器

c - 为什么 scanf(%s) 中的 char 参数即使乱序也无法在 %c 中显示?