小QAQ白
2018-07-12 03:13
采纳率: 57.1%
浏览 1.2k

c++如何识别指定字符串?

图片说明
如图所示,我要识别“Elements=3150”,得到3150这个数字,然后在跳转两行之后读取下面的数字(场)信息输入到指定数组中。

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

10条回答 默认 最新

  • ujnss 2018-07-18 16:22
    已采纳

    VS2017,C++11,如图图片说明

    打赏 评论
  • threenewbee 2018-07-12 03:14
     正则表达式 (?is)Elements=\d+.*\n.*\n
    
    打赏 评论
  • threenewbee 2018-07-12 03:44
    打赏 评论
  • magicniu 2018-07-12 04:23

    #include

    const TCHAR * tcsStart;
    const TCHAR * tcsEnd;
    TCHAR tcsNewRule[1024] = _T("");
    TCHAR tcsPrefix[MAX_PATH] = _T("");
    _tcscpy(tcsNewRule, _T("xxxxddhiadhwElements=3150,jsijedijeij"));
    CAtlRegExp<> reNewRule;
    REParseError status = reNewRule.Parse(_T("Elements={.*},"));
    if (REPARSE_ERROR_OK != status)
    {
    return;
    }
    //匹配出前缀和后缀
    CAtlREMatchContext<> mcNewRule;
    if (!reNewRule.Match(tcsNewRule, &mcNewRule))
    {
    return;
    }
    else
    {
    if(mcNewRule.m_uNumGroups > 0)
    {
    mcNewRule.GetMatch(0, &tcsStart, &tcsEnd);
    _tcsncpy_s(tcsPrefix, tcsStart, tcsEnd - tcsStart);
    }
    }

    打赏 评论
  • magicniu 2018-07-12 04:24

    以上代码我自己测试通过了
    得到3150

    打赏 评论
  • Assist丶 2018-07-12 05:31

    使用正则表达式 (?<=Elements=)\d+
    详细可见
    http://www.runoob.com/regexp/regexp-metachar.html

    打赏 评论
  • 元天-念然 2018-07-12 08:22

    在C语言中,字符串存储为字符数组,以'\0'结束。 在C的接口中,有strstr函数,可以在字符串中查找另一个字符串。

    char * strstr(const char *str1, const char *str2);

    功能为在str1中查找str2,如果存在,那么返回查找到的起始指针,否则返回NULL。

    参考代码:
    #include
    #include
    #include
    using namespace std;
    int main()
    {
    string a="abcdefghigklmn";
    char *b="def";
    char *c="123";

    if(strstr(a.c_str(), b) == NULL)//在a中查找b,如果不存在,
        cout << "not found\n";//输出结果。
    else//否则存在。
        cout <<"found\n"; //输出结果。
    if(strstr(a.c_str(), c) == NULL)//在a中查找b,如果不存在,
        cout << "not found\n";//输出结果。
    else//否则存在。
        cout <<"found\n"; //输出结果。
    return 0;
    

    }

    打赏 评论
  • AlbertS 2018-07-13 04:15

    直接strstr搜也可以,当然正则表达式更高端一点,其实就一步步操作就行
    strstr找到Elements=然后读取后面的数字,然后在找到两个\n之后就是你要的内容了

    打赏 评论
  • 小木 2018-07-13 10:05

    使用strstr 查找Elements,然后通过fgets跳过两行,接着fread就行

    打赏 评论
  • codofd 2018-07-19 01:10

    for (i=0;i if (s[i]>='0'&&s[i]<='9') s1+=s[i];
    s代表要识别的字符串;
    s1储存结果

    打赏 评论

相关推荐 更多相似问题