プロが教えるわが家の防犯対策術!

CString のメンバ関数Formatにて全角空白文字を連続して
入れる方法がありましたら教えてください。
GetBufferでアドレスを取得してmemset等で複数格納する事は
可能なのですが、できればFormatをしようしてスマートに
格納したいです。。。
ちなみに半角空白は下記で格納可能でした。

CString s;
s.Format("%-36d", " ");

左詰めで半角空白が36バイト入ります。
この要領で全角空白を複数格納したいです。
引数の指定の方法等わかりましたら、教えてください。
よろしくおねがいします。

A 回答 (2件)

そのような関数を自作すれば、以後はスマートに使えますよ。



全てを既存ライブラリに頼るのではなく、自分の都合にあった
部品(関数)を自作することも重要かと思います。
例えば、こんな仕様で作っておくのはいかが?

CString repeatString(int count, const char * string = NULL)
{
if (count <= 0) return "";
if (string == NULL) {
string = " ";
}
// 以下、戻すべき文字列を作る処理
// CString returnString;
// ...
// return returnString;
}
// 質問の例なら、CString s = repeatString(36);
// CString s = repeatString(3, "Go");なら"GoGoGo"に
    • good
    • 0

>>s.Format("%-36d", " ");



上記は、数値指定です。指定はdでなくsが正しいと思います。
%-36d -> %-36s
(半角空白の場合、たまたまうまくいっているようですけど)

それから、CStinrgクラスに全角文字を複数セットする関数は無いようです。長い空白文字列をセットする(ちょっとカッコ悪いけどお手軽)か、全角1文字追加する関数を複数回呼び出すメンバーを追加したクラスを継承して作るなどすれば、どうでしょう?

最近C++にご無沙汰なので、自信なしですけど。
    • good
    • 0
この回答へのお礼

ありがとうございます。
>>s.Format("%-36s", " ");
でしたね。。。すいません。
やはり繰り返し行う等の方法しかありませんかね。
スマートに行えればとおもったのですが。

お礼日時:2006/09/18 23:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A