0

テキスト文字列に Unicode のハイフンマイナス文字を挿入しようとしています。次のような「無効なユニバーサル文字」エラーが表示されます。

u+002D (ハイフンマイナス)

[textViewContent insertString:@"\u002D" atIndex:cursorPosition.location];

ただし、これらは正常に機能します。

u+2212 (マイナス)

[textViewContent insertString:@"\u2212" atIndex:cursorPosition.location];

u+2010 (ハイフン)

[textViewContent insertString:@"\u2010" atIndex:cursorPosition.location];

ここで既存の Unicode に関する議論をいくつか調べてみましたが、最初の例でエラーが発生する原因となる私の例の違いを説明するものは見つかりませんでした。洞察力は大歓迎です。

4

1 に答える 1

2

非バーサル文字名には、その使用にいくつかの制限があります。C99およびC++98では、基本文字セット(U + 002Dを含む)の文字を参照するものを使用することは許可されていませんでした。

C ++ 11はこの要件を更新したため、文字列または文字リテラル内にいる場合は、基本文字を参照するUCNを使用できます。使用しているコンパイラのバージョンによっては、Objective-C++11を使用してコードを合法化できると思います。

とはいえ、この文字はASCIIと基本文字セットの一部なので、文字通りに書いてみませんか?

@"-"
于 2012-06-21T22:35:01.127 に答える