LCMapString について

解決


ofZ  2008-04-26 15:44:17  No: 30589  IP: 192.*.*.*

LCMapString API を使った文字変換で、質問です。

LCMapString(LOCALE_USER_DEFAULT, LCMAP_FULLWIDTH, 〜
このようにしたとき、「\」1文字だけ、半角のままです。
WinXP SP1, WinNT4.0 で再現しました。

この、\ マークが変換されないという仕様(?)は、どこかに記載してありますか?
それとも、別のフラグと組み合わせればよいのかな?

編集 削除
Mr.XRAY  2008-04-26 19:11:37  No: 30590  IP: 192.*.*.*

\はパスの区切り文字のためではないかと思われます.
変換後に,\を全角の¥で置換する方法はどうですか?

編集 削除
ofZ  2008-04-26 22:10:27  No: 30591  IP: 192.*.*.*

> \はパスの区切り文字のためではないかと思われます.
そうなんです。
たまたまテストしたのが、別の関数のテスト用に指定したファイルのパスで、
\ が、変換されなかったので気がついたんです。

だから、そういった例外について記述したものがないかな?と。

> 変換後に,\を全角の¥で置換する方法はどうですか?
確かにこれを考えましたが、トータルな速度的にどんなもんかなと。
「自作の半角→全角関数」と「LCMapString  &  StringReplace」は
どっちが早いかテストしようかと思っていたのですが、ちと忙しくて
検証していません。

もう一人自分が欲しい・・・

編集 削除
Mr.XRAY  2008-04-26 22:42:21  No: 30592  IP: 192.*.*.*

>別のフラグと組み合わせればよいのかな?

これがあればいいんですが,ないようですね(多分).
ということは,結局自作でしょうか(笑).

では,がんばって下さいね.

編集 削除
ofZ  2008-04-30 09:28:53  No: 30593  IP: 192.*.*.*

解決じゃないけど、解決にして〆ます

簡単なテストの結果
「自作の半角→全角関数」>「LCMapString & StringReplace」
自作の方が遅かった。
特に、変換対象の文字列が長くなればなるほど遅くなる。
まだ改善の余地がある自作関数ではあるけれど、改善はまた今度。

\ 記号に注意しておけばいいのですが、そういうことを、
誰も記述していない(ように見える)のが気になる・・・。

編集 削除