我需要从字符串中获取值。我有这段 HTML:
<input type="hidden" name="wtkn" value="56e45dbe_wNIT/DcufUPvZOL33jmkyqGpKxw=">
在 C++ 中,这段代码:
static string pat4 = " name=\"wtkn\"";
string::size_type wtkn;
if ((wtkn = l.find(pat4)) != string::npos)
{
l.erase(0,401);
l.erase(37,43);
string token = l;
return token;
}
所以我需要来自 HTML 的这个:56e45dbe_wNIT/DcufUPvZOL33jmkyqGpKxw= 但是这个字符串大约有 37 或 38 个字符。所以删除东西不是最好的选择。
最佳答案
仅使用内置的 C++ 对象和函数,您可以执行如下操作:
示例代码
#include <iostream>
#include <string>
std::string getValue(const std::string &html)
{
static const std::string VALUE = "value";
static const char DOUBLE_QUOTE = '"';
std::string result;
std::size_t pos = html.find(VALUE);
if (pos != std::string::npos)
{
std::size_t beg = html.find_first_of(DOUBLE_QUOTE, pos);
if (beg != std::string::npos)
{
std::size_t end = html.find_first_of(DOUBLE_QUOTE, beg + 1);
if (end != std::string::npos)
{
result = html.substr(beg + 1, end - beg - 1);
}
}
}
return result;
}
int main()
{
std::string html = "<input type=\"hidden\" name=\"wtkn\" value=\"56e45dbe_wNIT/DcufUPvZOL33jmkyqGpKxw=\">";
std::cout << "HTML: " << html << "\n";
std::cout << "value: " << getValue(html) << "\n";
return 0;
}
示例输出
HTML: <input type="hidden" name="wtkn" value="56e45dbe_wNIT/DcufUPvZOL33jmkyqGpKxw=">
value: 56e45dbe_wNIT/DcufUPvZOL33jmkyqGpKxw=
注意:可能需要额外的错误检查以获得可靠的解决方案。此示例实现也有一些先决条件(例如,包含 value
关键字,后跟在双引号和双引号之间的所需文本)。
关于C++ 从字符串中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35961729/