gpt4 book ai didi

c++ - std::string substr 方法问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:43:42 31 4
gpt4 key购买 nike

你好,我正在写这个方法。我希望它从给定的缓冲区中提取给定位置的一部分。我有一个像这样的字符串 something=one;something=two 我想得到“one”

这是我的想法:

static std::string Utils::getHeader( unsigned char * buffer)
{
std::string *str = new std::string(buffer);

std::size_t b_pos = str->find("=");
std::size_t a_pos = str->find(";");

return str->substr((a_pos + 1) ,(b_pos + 1));
}

但是在 eclipse 上,我在引用 std::string substr 方法时遇到了这个错误

Invalid arguments ...

Candidates are:
std::basic_string<char,std::char_traits<char>,std::allocator<char>> substr(?, ?)

谁能解释我为什么会收到此错误以及如何修复它?

最佳答案

代码大概应该是这样的:

static std::string Utils::getHeader(unsigned char * buffer, size_t size)
{
if(!buffer || !size)
return "";

const std::string str(reinterpret_cast<char*>(buffer), size);

std::size_t b_pos = str.find("=");
if(b_pos == std::string::npos)
throw ...;

std::size_t a_pos = str.find(";");
if(a_pos == std::string::npos)
throw ...;

if(b_pos > a_pos)
throw ...'

return str.substr((a_pos + 1), (b_pos + 1));
}

substr 有一个起始位置和一个长度。也许是这样的:

const size_t start = b_pos + 1;
const size_t length = (a_pos + 1) - (b_pos + 1) + 1;

然后,返回 str.substr(start, length);

不过,我不确定 a_pos + 1b_pos + 1 是否正确。确定这就是您想要的。

关于c++ - std::string substr 方法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24726635/

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