首页 > 解决方案 > 如何转换矢量到 C++ 中的 const char* const* ?

问题描述

我正在尝试将数据转换为特定单元测试的正确格式。任务是挖掘一组单词,单元测试将确保结果正确。我无法访问单元测试,只能使用 const char* const* 结果的声明。

所以我需要得到我的

std::vector<string> Words; 

const char* const* Result;

除以非 alpha 字符(例如空格)。

我知道这是一个指向常量字符的常量指针,所以我不确定在这里做什么,因为它们都是常量?

任何指针(双关语不是真正的意图)表示赞赏!

标签: c++data-conversion

解决方案


似乎很容易

#include <algorithm>
#include <functional>

// ...

std::vector<char const*> result_owner(Words.size());
std::transform(begin(Words), end(Words), begin(result_owner), 
               std::mem_fn(&std::string::c_str));

const char* const* Result = result_owner.data();

仅仅因为Result必须提供缓冲区的 const 视图,并不意味着缓冲区必须是 const 本身。所以它只是我们通过Wordsstd::string::c_str成员上投影获得的另一个向量。

之后Result可以简单地成为另一个引用result_owner.data();

这当然假设Result不必拥有它指向的缓冲区最好避免拥有原始指针。


推荐阅读