C++ 如何在cpp中查找第一个出现的字符(而不是从字符串的开头)?
我有这个字符串:C++ 如何在cpp中查找第一个出现的字符(而不是从字符串的开头)?,c++,string,find,substring,C++,String,Find,Substring,我有这个字符串: Content-Disposition: form-data; name="file"; filename="file001.docx" 我想写一个函数来获取名称,但它似乎不起作用 首先,我使用find来定位字符串name=,然后我搜索了第一个,但是我得到了错误的子字符串。有人能帮忙吗 这是我的密码: unsigned int start = 0; HEADER_NAME = "name=" start = myString.find(HEADER_N
Content-Disposition: form-data; name="file"; filename="file001.docx"
我想写一个函数来获取名称,但它似乎不起作用
首先,我使用find来定位字符串name=,然后我搜索了第一个,但是我得到了错误的子字符串。有人能帮忙吗
这是我的密码:
unsigned int start = 0;
HEADER_NAME = "name="
start = myString.find(HEADER_NAME);
if (start != std::string::npos)
{
unsigned int pos = 0;
pos = myString.find("\"\"", start+ HEADER_NAME.length() +1);
std::string name111 = myString.substr(start + HEADER_NAME.length() + 1 , pos - 1);
}
我得到:文件;filename=file001.docx作为名称111
当我使用另一个字符串时:Content Disposition:form data;name=请求
我收到一个请求
由于某些原因,pos值始终为4
有人能告诉我怎么了吗?我似乎找不到丢失的东西
非常感谢您使用的字符串::substr不正确。
第一个参数是子字符串第一个字符的索引,第二个参数是子字符串的长度。而是发送最后一个字符的索引。这就是为什么子字符串到达原始字符串的末尾
请尝试以下代码:
size_t substr_start = static_cast<size_t>(start) + HEADER_NAME.length() + 1;
size_t substr_length = static_cast<size_t>(pos) - substr_start;
std::string name111 = myString.substr(substr_start , substr_length);
搜索name=\并将标题_name.length添加到找到的开始
std::string name111 = myString.substr(start + HEADER_NAME.length() + 1 , pos - 1);