新石器Wiki

近年はシリコン(石)から進化した便利なもので溢れる時代。そんな気になった事や試した事など記す。

ユーザ用ツール

サイト用ツール


programing:cpp_builder:cpp_builder-unicode


差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
programing:cpp_builder:cpp_builder-unicode [2020/01/31 15:08] – [テーブル] yokoprograming:cpp_builder:cpp_builder-unicode [2020/01/31 21:29] (現在) – [文字列及び文字の移行] yoko
行 3: 行 3:
 [[devtool/ide/cpp_builder-rad_studio/start|C++Builder]]の RAD Studio 2009 バージョン以降で、完全に[[wpjp>Unicode|Unicode]]をサポートして内部の文字列の扱いが変更になっている。特に、それ以前のバージョン(私の場合は C++Builder 5)のソースを動かそうとした場合に、色々と留意する点があるので備忘録を残す。 [[devtool/ide/cpp_builder-rad_studio/start|C++Builder]]の RAD Studio 2009 バージョン以降で、完全に[[wpjp>Unicode|Unicode]]をサポートして内部の文字列の扱いが変更になっている。特に、それ以前のバージョン(私の場合は C++Builder 5)のソースを動かそうとした場合に、色々と留意する点があるので備忘録を残す。
  
-文字列の扱い +文字列の扱い変更対応 
------------+-----------------
 `UnicodeString`型が追加され、従来の `String`型,`Char`型,`PChar`型の定義が以下のように変更されている。({{https://www.embarcadero.com/images/jp/dm/technical-papers/delphi_unicode_wp_jp.pdf|参考1.}}資料参照) `UnicodeString`型が追加され、従来の `String`型,`Char`型,`PChar`型の定義が以下のように変更されている。({{https://www.embarcadero.com/images/jp/dm/technical-papers/delphi_unicode_wp_jp.pdf|参考1.}}資料参照)
  
行 12: 行 12:
 | `PChar`   | `wchar_t *`でtypedef                  | | `PChar`   | `wchar_t *`でtypedef                  |
  
-### 文字列及び文字の移行+### 準備 
 +ソースファイルは全て UTF-8 のBOM付きに変換して保存しておく。 
 + 
 +### 文字列及び文字の移行
 従来の`AnsiString`や`char`型も引き続き使えるが、将来の事も考えて以下のようにソースを修正。 従来の`AnsiString`や`char`型も引き続き使えるが、将来の事も考えて以下のようにソースを修正。
  
行 19: 行 22:
 | `char`        | `Char`    |                         | | `char`        | `Char`    |                         |
 | `char *`      | `PChar`                           | | `char *`      | `PChar`                           |
- 
-  * 尚、ソースファイルは全て UTF-8 のBOM付きに変換して保存しておく。 
  
 ### 文字列定数及び文字定数の修正 ### 文字列定数及び文字定数の修正
行 33: 行 34:
 `fopen`などのC標準関数は、`char`型を要求しているのでコンパイルエラーとなる。以下のように、`_w`を付加した関数名に変更する。 `fopen`などのC標準関数は、`char`型を要求しているのでコンパイルエラーとなる。以下のように、`_w`を付加した関数名に変更する。
 <code c> <code c>
 +String fname = L"test.txt";
 +
 fp = fopen(fname.c_str(), "rt"); fp = fopen(fname.c_str(), "rt");
       ↓       ↓
行 49: 行 52:
  
  
 +その他注意点
 +----------
 +
 +### 添え字番号の開始は1
 +String型の文字列は文字配列のようにアクセスできるが、添え字の開始番号は 0 でなくて 1〜 なので注意。(0でアクセスすると例外トラップ)
 +
 +<code c>
 +String text = L"あいうえお";
 +Char c = text[1];         /* 'あ'が取り出される */
 +</code>
  
  
programing/cpp_builder/cpp_builder-unicode.1580450892.txt.gz · 最終更新: 2020/01/31 15:08 by yoko