従来の方法で文字列をトークン化する方法を説明しましたが、このトークンをトークンで分割するにはどうすればよいでしょうか?トークンで区切られたトークンのトークン化
例えばYYYYなどの日付/時刻画像所与例えば\ MMM \はHH DD:MM:SSは、私は以下でアレイに分割したい:
"yyyy", "\", "MMM", "\", "dd", " " , "HH", ":", "mm", ":", "ss"
"トークン" YYYYであります、MMM、dd、HH、mm、ssである。私は区切り記号が何であるか分からず、トークンだけが分かります。しかし、セパレータは最終的な結果に現れる必要があります。トークンの完全なリストは、次のとおりです。
"yyyy" // – four-digit year, e.g. 1996
"yy" // – two-digit year, e.g. 96
"MMMM" // – month spelled out in full, e.g. April
"MMM" // – three-letter abbreviation for month, e.g. Apr
"MM" // – two-digit month, e.g. 04
"M" // – one-digit month for months below 10, e.g. 4
"dd" // – two-digit day, e.g. 02
"d" // – one-digit day for days below 10, e.g. 2
"ss" // - two digit second
"s" // - one-digit second for seconds below 10
"mm" // - two digit minute
"m" // - one-digit minute for minutes below 10
"tt" // - AM/PM designator
"t" // - first character of AM/PM designator
"hh" // - 12 hour two-digit for hours below 10
"h" // - 12 hour one-digit for hours below 10
"HH" // - 24 hour two-digit for hours below 10
"H" // - 24 hour one-digit for hours below 10
は、私は標準ライブラリのstd ::文字列が解析とtokenisingに非常に強力ではありません気づいたと私はブーストを使用することはできません。タイトな、慣用的な解決策はありますか?私はこれを行うためのCスタイルのアルゴリズムを打ち明けるのは嫌です。パフォーマンスは考慮されません。
あなたのトークンは、常に特殊文字しようとしている、または彼らはあまりにも手紙だろうか? – WearyWanderer
トークンは上記のトークンだけです。トークン間の文字は、日本語の文字(私はWindows上でwchar_tを使用する必要がありますので、それも潜在的な問題です)かもしれません。基本的には、任意のロケールで日付/時刻のピクチャ文字列がどのように見えるかは問わない。私が確かに知っているのは、それらのコンポーネントが上記のトークンを使って画像に定義されていることだけです。 – Robinson
正規表現はC++ 11の一部です:http://www.cplusplus.com/reference/regex/パフォーマンスが絶対的な要件でない限り、正規表現を使用してください。 – Dummy00001