Previous | Next | Trail Map | Integrating Native Methods into Java
Programs | ネイティブメソッドを実装する


文字列を操作する

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 に似ているが、返されたポインタの解放は呼び出し元が行う。


Previous | Next | Trail Map | Integrating Native Methods into Java
Programs | ネイティブメソッドを実装する