質問

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);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top