月が01-12の形式であるかどうかを確認する必要があります。私は正規表現を作成し、それが正規表現と一致するかどうかを確認するために入力を受け取りました。 コード -Regexec()が望みの結果を出さない
#include <iostream>
#include<string>
using namespace std;
#include<regex.h>
#include<stdio.h>
int main()
{
int a;
cin>>a;
cout << "Hello World" << endl;
string mon;
cin>>mon;
string exp_month = mon;
string monthRegex = "(0[1-9]|1[0-2])";
regex_t preg;
int rc;
if (0 != (rc = regcomp(&preg, monthRegex.c_str(), REG_NOSUB))) {
cout<<("regcomp() failed, returning nonzero (%d)\n", rc);
exit(EXIT_FAILURE);
}
if (regexec(&preg,exp_month.c_str(),0,NULL,0)==0)
{
cout<<"yess";
}
else
{
cout<<"no";
}
return 0;
}
入力 = 09。 mon = 09; 出力は「なし」
しかし09試合与えられた正規表現
これはCとC++の面白い組み合わせです、なぜですか?また、「年」とは何ですか? –
これは[最小限で完全で検証可能な例](https://stackoverflow.com/help/mcve)ではありません。あなたの質問には関係のないたくさんのコードを削除することができます。また、CとC++の両方にすることはできません。異なる言語なのでです。また、あなたの圧痕はより良いかもしれません。 – Useless
申し訳ありませんこのコードを新しくしました コードを編集しました –