C ++在字符串中查找特定数字

Posted

技术标签:

【中文标题】C ++在字符串中查找特定数字【英文标题】:C++ find specific number in a string 【发布时间】:2015-04-18 14:16:27 【问题描述】:

我对正则表达式很陌生。我有这个字符串。

string s = media_type=video|key_frame=1|pkt_pts=1516999|pkt_pts_time=50.566633|pkt_dts=1516999|

我需要在 C++ 中使用字符串运算符和正则表达式提取 50.566633 值。有人可以建议一种方法吗?

【问题讨论】:

myregextester.com pkt_pts_time\=([\\+\\-]?(?:\\d*\\.?\\d+)). 【参考方案1】:

正则表达式非常值得研究,因为它非常有用。

这对我有用:

#include <regex>
#include <iostream>

std::string s = "media_type=video|key_frame=1|pkt_pts=1516999|pkt_pts_time=50.566633|pkt_dts=1516999|";

int main()

    // parens () define a capture group to extract your value
    // so the important part here is ([^|]*)
    // - capture any number of anything that is not a |
    std::regex rx("pkt_pts_time=([^|]*)");

    std::smatch m;
    if(std::regex_search(s, m, r))
        std::cout << m.str(1); // first captured group

点击Working Example

【讨论】:

非常感谢您的回答。但它说 R 是未定义的。 @Asankasanjaya 您必须使用 C++11 才能使正则表达式工作。您是否使用-std=c++11 标志编译? (或 VC++ 等价物)。 (在这种情况下,原始字符串点亮没有帮助,所以我删除了它) 谢谢,我会试试的。 我从您那里得到了代码并进行了一些更改。现在它的工作。这些是我所做的更改。 我更改了行 regex rx("pkt_pts_time=([^|]*)");到正则表达式 r("pkt_pts_time\=([\\+\\-]?(?:\\d*\\.?\\d+))");

以上是关于C ++在字符串中查找特定数字的主要内容,如果未能解决你的问题,请参考以下文章

c语言中如何在一个字符串中查找/出现的位置?需要第一次出现和第二次出现中间的内容和第二次出现和第三

在数字中的特定数字处查找数字[关闭]

怎么找到一个字符串中特定字符的位置

使用 RegEx 在字符串中查找特定文本后的数字

查找字符串中的特定数字并赋值

如何在bash中查找和打印特定字符