質問
VC6で文字列の書式設定を行うためのより良い代替手段があり、置換前に構文チェックがありますか?
解決
CString
は、 printf
スタイルのフォーマット用に Format
メソッドを提供しますが、これはタイプセーフではありません。
タイプセーフな文字列のフォーマットには、 std :: stringstream
/ std :: wstringstream
または Boost Format ライブラリですが、これらは両方ともC ++ std :: basic_string
クラスで動作しますMFC CString
クラスではなく、テンプレート。 VC6でこれらの両方を正常に使用しました。
Boost Formatは、 printf
のような構文を使用できるため便利であり、指定した引数がフォーマット文字列と一致しない場合に例外をスローしますが、C ++ iostreamsを使用した文字列フォーマットは、コードを非常に冗長にするため。
次のように、 std :: string
から CString
オブジェクトを作成できることに注意してください。
std::string s;
CString str( s.c_str() );
これが役立つことを願っています!
他のヒント
FastFormat をご覧ください。簡単な構文と「シンク」があります。 -フォーマット操作の結果を受け取るもののFastFormatの用語-CStringの場合。
次の行に沿ったもの:
int i = 1;
std::string ss = "a std string";
CString cs = "a Cstring";
CString result;
fastformat::fmt(result, "i={0}, ss={1}, cs={2}", i, ss, cs);
FormatString-スマートストリングフォーマット
Ivo Beltchev著
CodeProjectに投稿
所属していません StackOverflow