SophiaFramework UNIVERSE 5.3 |
BREW では、シングルバイト/マルチバイト文字(ANSI 文字)を表す char 型と、 携帯電話の画面に表示するためのダブルバイト文字を表す AECHAR 型(uint16 型)があります。
SophiaFramewok UNIVERSE では、 これらの文字型はそれぞれ AChar 型、WChar 型として typedef により定義されています。 また、以下の 2 つの文字列クラスが利用可能です。
この 2 つの文字列クラスの機能は、文字列の型以外はすべて同等です。
SFXAnsiString / SFXWideString クラスが所有するバッファはクラス内部で管理され、 AChar 型文字列と WChar 型文字列の変換も自動的に行われます。 そのため、開発者はポインタやヒープ、型変換を意識することなく、文字列を簡単に扱えます。
表 11.1. 文字列を表すクラス
文字の種類 | BREW 文字型 | SophiaFramework 文字型 | SophiaFramework 文字列クラス |
---|---|---|---|
シングルバイト/マルチバイト文字(ANSI 文字) | char | AChar | SFXAnsiString |
ダブルバイト文字 | AECHAR (uint16) | WChar | SFXWideString |
文字列クラス以外に、以下の表にあるような文字列を変換したり、種類を判定するための文字列処理クラスも 3 種類提供されています。
表 11.2. 文字列処理クラス
クラス名 | 解説 |
---|---|
SFXAscii | ASCII 文字列特有の処理を行うクラスです。 |
SFXShiftJIS | Shift_JIS エンコード文字列特有の処理を行うクラスです。 |
SFXTextEncoding | 文字エンコードを変換するためのクラスです。 |
例 11.1. 定義
SFXAnsiString str1("http://"); SFXAnsiString str2("www.s-cradle.com"); SFXAnsiString str3(str1); SFXAnsiString str4;
上記コードは、変数 str1, str2, str3, str4 を SFXAnsiString オブジェクトとして定義しています。 それぞれの初期値は以下の通りです。
例 11.2. 連結
SFXAnsiString str1("http://"); SFXAnsiString str2("www.s-cradle.com"); SFXAnsiString str3; str3 = str1 + str2; // str3 は "http://www.s-cradle.com"str3 += "/index.html"; // str3 = "/index.html"
例 11.3. 挿入 1
SFXAnsiString str3("/index.html"); SFXAnsiString str4; str4 = str3.Insert(23, "/sophiaframework"); // str4 は "/sophiaframework/index.html"
例 11.4. 挿入 2
// 以下の方法でも同じ結果が得られる SFXAnsiString str1("/sophiaframework"); SFXAnsiString str3("/index.html"); SFXAnsiString str4; // 引数に SFXAnsiString オブジェクトを指定できる str4 = str3.Insert(23, str1);
注意 | |
---|---|
上のコードを実行しても、str3 の内容は変更されません。 |
例 11.5. 一部削除
SFXAnsiString str4("/sophiaframework/index.html"); str4 = str4.Remove(23, 39); // str4 = "/index.html"
例 11.7. 長さの取得
SFXAnsiString str4("/index.html"); SInt32 length = str4.GetLengthCString(); // length = 34
例 11.8. 末尾の削除
SFXAnsiString str4("/index.html"); // str4 の長さを取得する SInt32 length = str4.GetLengthCString(); str4 = str4.Remove(length - 11, length); // str4 は "http://www.s-cradle.com"
例 11.9. 代入( コピー )
SFXAnsiString str1; SFXAnsiString str2("abc"); SFXAnsiString str3; str1 = "http://www.s-cradle.com"; // str1 = "http://www.s-cradle.com"; str3 = str2; // str3 = "abc"
例 11.10. 文字の get / set
SFXAnsiString str1("/index1.html"); AChar character = str1[29]; // character = '1'str1[29] = '2'; // str1 = "/index2.html"
例 11.11. 部分抜き出し
SFXAnsiString str1("/index.html"); SFXAnsiString str2; str2 = str1.Substring(7, 23); // str2 = "www.s-cradle.com"
例 11.12. 検索
SFXAnsiString str1("/index.html"); SInt32 i = str1.FirstIndexOf("//"); // i = 5 SInt32 j = str1.FirstIndexOf("~"); // ~ は無いので j = -1 SInt32 k = str1.FirstIndexOf("/", 7); // 7 文字目から探し始めるので k = 23 SInt32 m = str1.LastIndexOf("/"); // m = 23
例 11.13. URL の編集
SFXAnsiString str1("/index.html"); SInt32 m = str1.LastIndexOf("/"); // m = 23 // str1 は "http://www.s-cradle.com" str1.Remove(m, str1.GetLength()); // 末尾を削除する // str1 は "/file.xml" str1 += "/file.xml";
例 11.14. 置換
SFXAnsiString str3("x < y & y < z"); // すべての "<" を "<" に置換する str3 = str3.Replace("<", "<"); // すべての "&" を "&" に置換する str3 = str3.Replace("&", "&"); // 下記のように記述してもよい // str3 = str3.Replace("<", "<").Replace("&", "&");
例 11.15. 比較
if (str1 == str2) { // str1 と str2 が等しいとき } if (str1 == "abc") { // str1 が "abc" のとき ... } if (str1.Equals("abc", true)) { // str1 が "abc" のとき( 大文字小文字を区別する ) ... } if (str1.Equals("abc", false)) { // str1 が "abc" のとき( 大文字小文字を区別しない ) ... } if (str1.StartsWith("http://")) { // str1 が "http://" で始まるとき ... }
例 11.16. C 言語文字列 ( ポインタ ) の取得
// ACharPtr 型を引数にとる関数
Void func(ACharPtr arg);
func(str1.GetCString());
例 11.18. 空文字列のチェック
// 例: SFXAnsiString を引数にとる関数 Void func(SFXAnsiString str) { if (str.IsEmpty()) { // str が空文字列のとき return; // 何も処理しない } // 関数の本体の処理を記述する }
例 11.19. 空白の削除
SFXAnsiString string = " abc"; // string = " abc" // Trim 関数は新しい文字列を返すので再代入する string = string.Trim(); // string = "abc"
例 11.20. 書式出力 ( 整数 → 文字列の変換 )
// str4 = "255.255.0.0:8080" // 書式は SPRINTF と同じ str4 = SFXAnsiString::Format("%d.%d.%d.%d:%d", 255, 255, 0, 0, 8080);
例 11.22. BREW インターフェースでの使い方
// ファイル名 str1 のファイルの情報を取得する
SFBFileMgrSmp fileMgr = SFBFileMgr::NewInstance();
fileMgr->GetInfo(str1);
例 11.23. 文字列の描画
// SFXGraphics インスタンスを取得する SFXGraphicsPtr graphics = SFXGraphics::GetInstance(); SFXWideString str("Hello World!"); SFXRectangle rectangle(10, 80, 220, 30); // 文字列の描画 ( 第 1 引数 : 文字列、第 2 引数 : 描画場所、第 3 引数 : アライメント) // アライメント:左詰め & 上詰め graphics->DrawSingleText(str, rectangle, IDF_ALIGN_LEFT | IDF_ALIGN_TOP); // アライメント:中央揃え graphics->DrawSingleText(str, rectangle.AddY(30), IDF_ALIGN_CENTER | IDF_ALIGN_MIDDLE); // アライメント:デフォルト // graphics->DrawSingleText(str, rectangle.AddY(30), IDF_ALIGN_NONE); と同等 graphics->DrawSingleText(str, rectangle.AddY(30)); // アライメント:右詰め & 下詰め graphics->DrawSingleText(str, rectangle.AddY(30), IDF_ALIGN_RIGHT | IDF_ALIGN_BOTTOM);
Copyright(c) 2002 - 2024 Sophia Cradle Incorporated All Rights Reserved. |