質問: 値による Unicode 拡張シンボルの正しい順序は?
Unicode 文字のリストを並べ替えると、Excel の "=code()" を使用してそれらの値で並べ替える場合とは順序が異なります。目的は、文字間の距離を測定することです。たとえば、 ab = 1 と &-% = 1; です。Excel の並べ替え関数で並べ替えると、3 つ以内に並べられた 2 つの文字が 134 離れた値を持つように見えます。
また、一部の char 記号は Excel で空白であり、いくつかは 'find' で 2 回検出され、2 つの異なる記号であり、いくつかはまったく検出されません。これらの「特殊な」文字の詳細を説明してください。
http://en.wikipedia.org/wiki/List_of_Unicode_characters
サンプルコード:
int charDist = abs(alpha[index] - code[0]);
編集: C++ vs2008 の UNICODE 値を把握するために、コード 1 からコード 255 までの各コードをコード 1 に対する比較として実行しました。
cout << mem << " code " << key << " is " << abs(key[0] - '') << " from " << endl;
角かっこの中は、この Web サイトにはフォントがありませんが、コマンド ウィンドウにはある黒いハッピー フェイスです。Excel は空白のままです。
次の Unicode は、std ライブラリと #include 9、10、13、26、34、44 を含む c++ vs2008 では処理されません。
また、コード 1 から 127 までの数値の「距離」は正しいのですが、128 では距離が余分にスキップされ、何らかの理由でさらに 1 つ離れています。次に、128 から 255 で距離が逆転し、近づきます。255 は 1 から 2 離れています ''
これらがより論理的な何かに従っていて、しゃっくりやスキップや反転のない 1 から 255 だけで、255-1 = 254 だったらいいのですが、ねえ、私は何を知っていますか.
EDIT2:私はそれを見つけました-絶対なしで-UNIFORMATの照合は128から255、次に1から127であり、ゴミである9、10、13、26、34、44の6つのスキップで1から255を生成します。それは直感的ではありませんでした。新しい順序 128->255,1->127 では、127 から 128 への奇妙なスキップがより明確になります。これは、0 がないため、255 と 1 の間の値が欠落しているためです。
解決策: 各シンボルの値を使用して独自のハッシュテーブルを作成し、UNIFORMAT のいくつかの特定のサブセットの外側で文字距離を測定するのに正しくないため、UNIFORMAT 値を提供するために C++ std ライブラリまたは vs2008 に依存しないでください。