gpt4 book ai didi

c++ - 如何从 vector 转换为常量数组

转载 作者:行者123 更新时间:2023-11-30 02:01:06 26 4
gpt4 key购买 nike

我有一个函数的 API,比如:

void func (const char** s,const size_t* ss);

即该函数获取空终止字符串的 const 数组 [ s ] 和它们的尺寸 [ ss ].我在运行时获取字符串,但不知道它们的数量。我想做的是定义 vector<char*> vS - 向其中插入字符串并定义 vector<size_t> vSS - 将字符串大小插入其中。最终我应该转移vector<char*> vSconst char**vector<size_t> vSSconst size_t* .我知道存在一个技巧 &vS[0]/&vSS[0] .问题是上面生成char**size_t* ss分别。但是我缺少const。问题如何解决?

最佳答案

如果您能够修复 API 使其常量正确,则将其更改为:

void func (const char* const* s,const size_t* ss);

否则,如果不需要通过 vector 修改字符串内容,则将 vector 更改为:

vector<const char*> vS;

否则,您需要执行 const_cast 并相信 API 不会修改任何内容:

func(const_cast<const char**>(&vS[0]), &vSS[0]);

(如果您有兴趣,将 char** 传递给采用 const char** 的函数的问题是该函数可以修改指向指向一个 const char。然后调用者将有一个指向该 const 对象的非 const 指针,没有任何东西可以阻止他尝试修改它。砰!未定义的行为。 )

关于c++ - 如何从 vector 转换为常量数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14481461/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com