C++ 从字符串中获取值

标签 c++

我需要从字符串中获取值。我有这段 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=

Live Example


注意:可能需要额外的错误检查以获得可靠的解决方案。此示例实现也有一些先决条件(例如,包含 value 关键字,后跟在双引号和双引号之间的所需文本)。

关于C++ 从字符串中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35961729/

相关文章:

c++ - 在 Ubuntu 18.04 上,我编译的 cpp 可执行文件找不到 VTK7 依赖项

c++ - 使用 QTestLib 进行单元测试

没有标准库的 C++ 智能指针

c++ - 层次结构中的反向可变参数模板参数

c++ - multiset equal_range 线程安全吗?

c++ - 从分层窗口获取 HBITMAP - 不正确的数据

c++ - 一起使用 MPI 和 OpenCV 时出现段错误

c++ - 获取用于 for 循环的数组大小

c++ - 内置 C++ 函数,可对两个字符串进行不区分大小写的比较

c++ - 访问静态变量时未解析的外部符号