LCMapString API を使った文字変換で、質問です。
LCMapString(LOCALE_USER_DEFAULT, LCMAP_FULLWIDTH, 〜
このようにしたとき、「\」1文字だけ、半角のままです。
WinXP SP1, WinNT4.0 で再現しました。
この、\ マークが変換されないという仕様(?)は、どこかに記載してありますか?
それとも、別のフラグと組み合わせればよいのかな?
\はパスの区切り文字のためではないかと思われます.
変換後に,\を全角の¥で置換する方法はどうですか?
> \はパスの区切り文字のためではないかと思われます.
そうなんです。
たまたまテストしたのが、別の関数のテスト用に指定したファイルのパスで、
\ が、変換されなかったので気がついたんです。
だから、そういった例外について記述したものがないかな?と。
> 変換後に,\を全角の¥で置換する方法はどうですか?
確かにこれを考えましたが、トータルな速度的にどんなもんかなと。
「自作の半角→全角関数」と「LCMapString & StringReplace」は
どっちが早いかテストしようかと思っていたのですが、ちと忙しくて
検証していません。
もう一人自分が欲しい・・・
>別のフラグと組み合わせればよいのかな?
これがあればいいんですが,ないようですね(多分).
ということは,結局自作でしょうか(笑).
では,がんばって下さいね.
解決じゃないけど、解決にして〆ます
簡単なテストの結果
「自作の半角→全角関数」>「LCMapString & StringReplace」
自作の方が遅かった。
特に、変換対象の文字列が長くなればなるほど遅くなる。
まだ改善の余地がある自作関数ではあるけれど、改善はまた今度。
\ 記号に注意しておけばいいのですが、そういうことを、
誰も記述していない(ように見える)のが気になる・・・。
ツイート | ![]() |