問題タブ [wchar]
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 - 配列 wchar 使用時のエラー
タイプ wchar (szDrive) の変数があります。今は配列が必要で、その要素のタイプは wchar です。ここに私のコードがあります:
しかし、私が書くとき:
エラーがあります:error C2106: '=' : left operand must be l-value
誰かが私に理由を説明し、解決策を与えることができますか? どうぞ!
c - UTF-8の16進値を含む文字列をCのwcharに変換する方法は?
私はGCCを使用しています。次のような UTF-8 文字の 16 進値を含む文字列があります。
(そのような種類の文字列は xml ファイルから読み取られます)。これを文字 \u4e86 を含む wchar に変換したいと思います。
私は直接定義できることを知っています
しかし、私はこのような機能が欲しい
どのように?
kernel - WCHAR * を UNICODE STRING に変換
まずはWindowsドライバ開発に挑戦。WCHAR配列がnullで終了していないと仮定して、WCHAR配列(ユーザー空間からのもの)をUNICODE_STRING(カーネルモード)に変換するにはどうすればよいですか?
null で終わるかどうか、および新しいバッファー (null の場合は +2) を割り当てないかどうかを確認してから、RtlAnsiXXX 関数を使用する必要がありますか? 適切な方法は何ですか?
ありがとう!
c++ - TCHAR 文字列の文字を置き換える方法
パスを含む TCHAR 文字列があります。パス内に出現するすべての を置き換える必要があり/
ます\
。パスを保持する変数は次のように定義されます。
mypath
が含まれている場合、結果の文字列が になるように を に置き換えるC:/new/newfile/a.txt
必要があります。/
\
C:\new\newfile\a.txt
また、適応する必要があるファイルには、次のように UNICODE が既に定義されています。
wcsncmp
また、文字列比較には次のような関数が使用されています。TCHAR 文字列で文字置換を行うにはどうすればよいですか?
c++ - PCWSTR を文字列リテラルに正しく指していますか?
私は C++ に少し慣れていないので、文字列ポインターの質問について助けを求めています。
まず、整数を使用したポインターの基本について考えてみましょう。
実行すると、main() は整数を作成し、そのアドレスを SetBob に渡します。SetBob では、(pBob が指すアドレスの) 値は 5 に設定されます。SetBob が戻ると、bob の値は 5 になります。
では、文字列定数について考えてみましょう。
実行すると、main() は空の文字列を指す PCWSTR を作成し、そのアドレスを SetBob に渡します。SetBob では、PCWSTR ポインタが Done 文字列を指すようになりました。SetBob が戻ると、bob の値は "Done" になります。
私の質問は次のとおりです。
- デバッガーでは、SetBob を呼び出した後、bob 文字列が Done に設定されていることがわかります。しかし、なぜこれが機能するのでしょうか。整数の例では、整数にスペースを割り当てたので、そのスペースに値を格納できることは理にかなっています。ただし、文字列の例では、PCWSTR は単なるポインターです。文字列定数もメモリ内にあるという考えはここにあるので、その定数を指しているだけですか?
- "Done" リテラルは SetBob 内にあるため、それを指しているにもかかわらず、"Done" のメモリが再利用される可能性があることを心配する必要はありますか? たとえば、WCHAR バッファーを作成した場合、"Done" をバッファーにコピーするので問題ありません。しかし、私は関数内のリテラルを指しているので、そのリテラルは関数が終了した後のある時点で破棄され、bob が予期せず何も指していない可能性がありますか?
string - std::string 変数から「LPCWSTR」変数を動的に作成する
現在、私はコード(typedef _Null_terminated_ CONST WCHAR *LPCWSTR;
)を持っています:
ただし、次のようなものを有効にする必要があります。
c - wchar_t sprintf の問題
wchar の使用方法を学習していましたが、snprintf() を使用して char をコピーできません。テキストを a から b にコピーしたいのですが、値が出力されません。私は何を間違っていますか?そして、snprintfだけを使いたいです。
//出力
始める
984567
終わり
c - C での単純な Caesar 暗号の wchar 実装
エチオピアで広く話されている言語の 1 つであるアムハラ語の簡単なシーザー実装を作成しています。ここにコードがあります
コードは警告なしでコンパイルされます。キーが 5 以下の場合は問題なく動作します。キーの値が 6 以上の場合に問題が発生します。私がテストした限り、追加の文字が1つ出力されます。gdb を実行して、追加の文字がどこで取得されているかを確認しました。しかし、あまり意味がありませんでした。ここに私の質問があります:
- 0 から 5 のキーでは機能するのに、それより上では機能しないのはなぜですか?
- 5 より大きいキーに対して出力する追加の文字はどこで取得しますか?
それが役立つ場合、私のマシンの wchar のサイズは 4 バイトです。
ありがとうございました
編集:
サンプル入力:
0010 は、Unicode テーブルに対応する記号がない文字のように表示されます。
再度、感謝します。