0

私は新しいシステムを統合していますが、古いシステムにはメソッドに char* がありました。現在は代わりに UTF8CHAR * があります。

私は文字列オブジェクトを持っています:

string data("test set");

そしてそれを関数に渡したかった:

my_method(UTF8CHAR* text, ENUM extra, newStruct &item);

私の最初の試みは何でしたか:

newStruct param("hi", 0,0);
my_method(data.c_str(), extra::OPEN,param);

エラーは発生しませんが、代わりに EXC_BAD_ACCESS が発生します

4

1 に答える 1

1

Astringchar配列には、それぞれバイトのシーケンスが含まれています。問題のライブラリによって異なりますが、常識でUTF8CHARは、配列はバイトのシーケンスでもあり、特定のバイトの組み合わせは特定のUnicodeコードポイントを記述し、他の特定のバイトの組み合わせは不正であるという理解が追加されています。したがって、すべてのutf8 char配列はchar配列ですが、必ずしもその逆ではありません。区別はコンパイラがチェックできるものではないため、適切なデータ型の処理を保証することを除いて、charポインタを渡すことは機能するはずです。そうでない場合は、他の問題が発生した可能性があります。これは、投稿したコードから判断することはできません。

于 2012-12-13T19:22:25.573 に答える