gpt4 book ai didi

C++ 函数返回 const char *

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:55:27 27 4
gpt4 key购买 nike

我为单元测试类开发了一个小辅助函数,它需要我的 vector<unsigned char>并将其转换回 const char * .我写这个是为了将它传递给 gtest 的 ASSERT_STREQ用于简单比较的宏。在这里:

const char * convertVecToChar(std::vector<unsigned char>& source)
{
std::vector<unsigned char>::size_type size = source.size();
char* data = (char*)malloc(sizeof(char) * (size + 1));
memcpy(data, &source[0], size);
data[size] = 0;
return data;
}

这是一个被调用的例子:

ASSERT_STREQ("de", convertVecToChar(somevector));

我认为这是漏水的,但是因为我正在调用 malloc , 但没有调用 delete更远的路?

有没有更优雅的方法来做到这一点,它不涉及创建一个单独的 const char *每次调用 ASSERT_STREQ 的变量在测试方法中?

非常感谢所有回复。

克里斯

最佳答案

返回一个std::string而不是一个char*(malloc(),或new,不需要):

std::string convertVecToChar(std::vector<unsigned char>& source)
{
return std::string(source.begin(), source.end());
}

并使用:

ASSERT_STREQ("de", convertVecToChar(somevector).c_str());  

关于C++ 函数返回 const char *,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9819686/

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