LoginSignup
1
1

More than 5 years have passed since last update.

c++ builder XE4, 10.2 Tokyo > char文字列のString型への格納

Last updated at Posted at 2015-07-14
動作確認
C++ Builder XE4

文字コードの扱いにちょっとはまったのでメモ。

    char dmy[] = "test";

    String str_char_arg;
    String str_String_arg;
    AnsiString astr;

    // case1
    str_char_arg = String().sprintf(L"%s", dmy); // garble

    // case2
    String strMiddle = dmy;
    str_String_arg = String().sprintf(L"%s", strMiddle); // OK

    // case3
    astr = AnsiString().sprintf("%s", dmy); // OK

    int nop=1;

上記において、case1では文字化けが発生し、case2, case3では問題ない。

dmyはchar[]型なので、それをString型のL"%s"に渡すと失敗するということ。

case2のように、一度String型に変換するか、case3のようにAnsiStringで受ける方法がある。

10.2 Tokyo

(追記 2017/12/26)

動作環境
Rad Studio 10.2 Tokyo Update 2

Tokyoでも同じ動作であることを確認した。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1