問題タブ [widechar]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - C ++、WCHAR[]からstd::coutおよび比較
WCHAR[]をstd::coutに配置する必要があります...これはネイティブWifiAPIコールバックから渡されるPWLAN_CONNECTION_NOTIFICATION_DATAの一部です。
std :: cout<<var;を試してみました。ただし、最初の文字の数値アドレスを出力します。比較(var == L"some text"
)も機能しません。デバッガーは期待値を返しますが、比較は0を返します。この配列を標準の文字列(std :: string)に変換するにはどうすればよいですか?
前もって感謝します
c - C / C ++I18Nmbstowcsの質問
私はC/C++アプリケーションの入力の国際化に取り組んでいます。現在、マルチバイト文字列からワイド文字列への変換で問題が発生しています。
コードはクロスプラットフォーム互換である必要があるため、可能な限りmbstowcsとwcstombsを使用しています。
私は現在WIN32マシンで作業しており、ロケールを英語以外のロケール(日本語)に設定しました。
マルチバイト文字列を変換しようとすると、変換の問題が発生しているようです。
コードの例を次に示します。
実行の最後に、ワイド文字列には変換されたデータが含まれていません。MultiByteToWideCharを使用して現在のコードページを送信すると、コードページの設定に問題があると思います。
例:MultiByteToWideChar(CP_ACP、0、mbsVal、-1、wcsVal、size + 1); mbstowcs呼び出しの代わりに、変換は成功します。
私の質問は、MuliByteToWideChar呼び出しの代わりに一般的なmbstowcs呼び出しをどのように使用するかです。
c++ - 文字列に特定のUnicode文字があるかどうかをテストするにはどうすればよいですか?
引数を受け取るコマンドライン実行可能ファイルがあるとします。このexecutalbeはwidecharに対応しており、この引数の1つがオプションであるHYPHENケースで始まるかどうかをテストする必要があります。
コマンド-ofoo
ホストが文字セットを使用していることがわからない場合、コード内でどのようにテストできますか?特定のコンソールで、widecharフォレスト内の別のcharによって同じHYPHEN表現を生成することはできませんか?(そのような場合、それは野生の文字になります:P)
c++ - C++:ワイド文字が正しく出力されませんか?
私のコードは基本的にこれです:
ワイド文字列を使いたいのですが、出力方法がわからないのでwprintfを使いました。次のようなものを実行すると:
16 進数のコードポイントはこれを作成します。
なぜそれらはすべて順番にジャンプするのですか?つまり、wprintf が間違っている場合、なぜこのような特定のごちゃまぜな順序で出力されるのか、まだわかりません!
編集:エンディアンか何か?2文字ごとに回転しているようです。は。
編集 2: wcout を使用してみましたが、まったく同じ 16 進数のコードポイントが出力されます。変!
c++ - コードポイントを表示するために wchar_t を int にキャストする方法は?
ユニコードをいじって何かをしたいときに、プログラムに単純な関数があります。この関数では、ユーザーが入力した文字のコード値を表示したいと考えていました。それは可能だと思われました、ここに私の機能があります:
(int) "a"
ご覧のとおり、整数値( などのASCII文字など)を表示したかっただけですlistcode(L"&")
が、&: &
!
そのようなワイド文字の整数値を見つけることはできませんか?
c++ - clang でワイド文字定数を使用すると、「ワイド文字定数の余分な文字は無視されます」というエラーが表示されます
最近、gcc から clang に切り替えることにしましたが、ワイド文字定数の使用に対して次の警告が表示されます: 「ワイド文字定数の余分な文字は無視されました」。警告を受け取るコードは次のとおりです。
ここで、case 条件の文字はすべて高度な Unicode 文字であるため、clang パーサーでは明らかにマルチバイト文字として認識されます (ソース コードは UTF-8 でエンコードされています)。
私の質問は、警告メッセージの背後にある意味は何ですか。つまり、正確には無視されているものです。また、この警告が与えられた場合、私のプログラムは設計どおりに動作しますか?
gcc はこのコードに対して警告を表示せず、すべてが魅力的に機能します。
c - qsortの4番目の引数に対する「互換性のないポインタ型」コンパイラの警告
qsort
標準ライブラリを使用して、ワイド文字の配列を並べ替えようとしています。
今、私は関連する関数がこれらのプロトタイプを持っていると思います:
結果は完全に期待どおりですが、なぜコンパイラの警告が表示されるのですか?passing argument 4 of ‘qsort’ from incompatible pointer type
wcscoll
そして、プロトタイプに合うようにキャストするにはどうすればよいですか?
別の比較関数を定義して渡すと、警告は消えます。
...しかし、これは、引数がタイプでない場合のエラー処理が必要なようwchar_t *
です。
java - Java char プリミティブが 2 バイトのメモリを占有するのはなぜですか?
Java char プリミティブ データ型が 1 バイトの C とは異なり、2 バイトである理由はありますか?
ありがとう
c++ - UNICODE 文字データの _T( ) マクロの変更
次のように定義されている _T(x) を使用する UNICODE アプリケーションがあります。
L は、どのプラットフォームでも 4 バイトになる wchar_t に定義されることを理解しています。間違っている場合は修正してください。私の要件は、L を 2 バイトにする必要があるということです。そのため、コンパイラのハックとして、-fshort-wchar gcc フラグの使用を開始しました。しかし今、アプリケーションを zSeries に移動する必要があり、そのプラットフォームで -fshort-wchar フラグの効果を確認できません。
アプリケーションを zSeries に移植できるようにするには、L ##x を使用した後でも -fshort-wchar フラグを使用せずに 2 バイト幅の文字を取得する必要があるように、_T( ) マクロを変更する必要があります。アプリケーションで常に L を 2 バイトに定義できるように、L の定義を変更する方法を教えてください。