-1
C++でYYYYMMDD形式に変換したい日付の束があります。C++部分文字列を抽出して特定の日付形式に変換する
string shell_arg = inputStr;
shell_arg = "'" + shell_arg + "'";
string cmd="date -d " + shell_arg + " +%Y%m%d 2>/dev/null";
FILE *ls = popen(cmd.c_str(), "r");
char retval[100];
fgets(retval, sizeof(retval), ls);
pclose(ls);
if(!isdigit(retval[0]))
{
strcpy(retval,"99991231");
}
return retval;
これは、ほとんどの日付形式、および戻り値「99991231」を扱うことができないものを扱う:私は現在、ちょうどLinuxのdateコマンドを通してそれを実行し、次のコードを持っています。私は、それぞれ
20130901
20121001
20131101
のように、各年の月の最初に評価することになっている
"Sep- 13"
"12 -Oct"
"13-Nov"
のような形式の日付の数を持っています。どのようにこれを達成するでしょうか? regexを使うつもりなら、私の設定はGNU Cライブラリ(regexecとregex_matchとは対照的に、regexecとregcompを使用する)だけを使うことができます。
**なぜ文字配列と 'std :: string'の両方を**両方使うのですか? –
が - で分割され、両方の文字列をトリムし、 'atoi(s.data())'が '0'を返さないことを検出し、必要に応じて他のものと交換して、最初のものを年、月の2番目? – coyotte508
これが正しいフォーマットであると判断したら、これは機能します。どのようにそれを行うにはどのような考え? @ coyotte508 – Danzo