Java 開発環境にはネイティブメソッドで Java 文字列を操作するときに役立つ関数 が用意されている。このような関数は javaString.h
に定義されてい る。
InputFile_open()
関数はこのような関数の 1 つ、javaString2CString()
を使用し、C 言語の文字配列を Java String オブジェクトで埋めている。これに関連したコードを次に示す。
char buf[MAXPATHLEN];
javaString2CString(unhand(this)->path, buf, sizeof(buf));
buf
は C 言語の文字配列である。この配列には Java String オブジェクトからの文字が埋められる。
javaString2CString()
への最初の引数は C 言語の文字配列へコピーする Java String である。unhand(this)->path
により、 InputFile オブジェクトからインスタンス変数 path
を取り出してい る。path
は Java String オブジェクトである。2 番目の引数は文字 のコピー先となる文字配列、3 番目の引数は文字配列の長さである。
javaString.h
に定義されている文字列関数の中でよく使用するものとして他に 2 つの関数がある。1 つは makeCString()
で、 Java String から C 言語の文字列 (char *
) を作成する。もう 1 つはmakeJavaString()
で、 C 言語の文字列 (char *
) から Java String オブジェクトを作成する。
makeCString()
関数は javaString2CString()
に似ており、Java String から C 言語の文字列を作り出す。この関数は次のように使用する 。
result = makeCString(aJavaString);
makeCString()
は char *
を返す。これは、aJavaString
からのデータがはいった null で終わる C 言語文字列を指す。
makeJavaString()
関数は、C 言語文字列から新規の Java String オブジェクトを作成する。makeJavaString()
は、次のように、ネイティブメソッドから String 値を返すときによく使用される。
char *result;
. . .
return makeJavaString(result, strlen(result));
その他の便利な文字列関数
javaString.h
ヘッダーファイルには、上記以外にも便利な文字列操作関数が納められている。
-
javaStringPrint()
- ネイティブメソッドから Java String をプリントする。
-
javaStringLength
- Java String の長さを返す。
-
allocCString
-
makeCString
に似ているが、返されたポインタの解放は呼び出し元が行う。