c++ - 如何转换矢量到 C++ 中的 const char* const* ?
问题描述
我正在尝试将数据转换为特定单元测试的正确格式。任务是挖掘一组单词,单元测试将确保结果正确。我无法访问单元测试,只能使用 const char* const* 结果的声明。
所以我需要得到我的
std::vector<string> Words;
至
const char* const* Result;
除以非 alpha 字符(例如空格)。
我知道这是一个指向常量字符的常量指针,所以我不确定在这里做什么,因为它们都是常量?
任何指针(双关语不是真正的意图)表示赞赏!
解决方案
似乎很容易
#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 本身。所以它只是我们通过Words
在std::string::c_str
成员上投影获得的另一个向量。
之后Result
可以简单地成为另一个引用result_owner.data();
。
这当然假设Result
不必拥有它指向的缓冲区。最好避免拥有原始指针。
推荐阅读
- sas - 如何使用前一行 SAS 的值创建字符串
- php - 将动态生成的 php 变量传递给 jquery 函数
- apache-spark - 无法将 DF 摄取到 elasticsearch
- android - Ajax 请求在实时 Google Play 应用程序中不起作用
- c++ - 如何检查网站是否包含 C++ 中的字符串?
- asp.net - ASP.NET - 模拟用户,但访问 SQL Server 时除外
- reactjs - 如何能够通过单击表reactjs的行来进入详细视图
- android - 表达式或语句中出现意外的标记“sha1”。用于为 facebook 开发者帐户应用程序生成 keyhash
- r - 可以使用什么方法在一页上打印多个 eclust 图?
- python - 如何检查哪个 Python 解释器 Spyder 在其控制台上运行?