問題タブ [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++ - Linux と Windows の wchar_t の違いと変換
これとこのスレッドから、Windows では wchar_t が 16 ビットであり、Linux では wchar_t が 32 ビットであることを理解しています。
私のサーバーは Windows ベースで、クライアントは Linux です。
サーバーには、クライアントからホスト名を取得するための API があります。クライアントが Windows ベースの場合、GetComputerNameW を実行して Wide-String を返すことができます。ただし、クライアントが Linux ベースの場合、事態は複雑になります。
最初の単純なアプローチとして、Windows サーバー側に wchar_t* を返すことを期待して mbstowcs() を使用しました。ただし、この LPWSTR (Linux clinet 側に typedef wchar_t* LPWSTR があります) は、wchar_t が 16 ビットであると想定されるため、Windows では認識できません。
では、Linux で gethostname() の出力を変換する - これは char* で unsigned short (16 ビット) に私の唯一のオプションですか?
前もって感謝します!
c++ - UTF-8からANSIwcstombsへの変換が1つの特殊文字で失敗する
wchar_t*をchar*に表示されるように変更したい。WideCharToMultibyteのような変換は行わないでください。
wcstombs関数を見つけて、完全に機能しているように見えましたが、正しく変更されない文字が1つあります。
これは「œ」であり、ANSI番号156ですが、UTF-8では番号339です。原因のASCIIにはそれほど多くの番号がありませんが、なぜ間違った番号になるのでしょうか。
ここに私のソースコードの一部があり、それが機能するようにループとifを追加しました。
このコードは機能していますが、真剣に、これはその問題を解決するための最良の方法ですか?
よろしくお願いします!
wchar - Wsutil.exe (ネイティブ Web サービス コンパイラ): xsd:string タイプの WCHAR* と LPCWSTR の比較
WCHAR *
ネイティブ Web サービス コンパイラがfor an xsd:string
vs a const wchar_t*
(または略して LPCWSTR)を生成する正当な理由はありますか?
この質問をする理由は、私たちのアプリケーションstd::wstring
が、WCF サービスに渡す必要があるコード内に s が含まれているネイティブの C++ アプリケーションだからです。ネイティブ Web サービス コンパイラによって生成された C 関数を使用するには、次の行で何かを行う必要があります。
上から見たように、私はポインターを廃止することを余儀なくされていconst
ます。ここでの私の懸念は、WCHAR*
型を明示的に持つことによって、とにかく webservices.lib 自体によって操作されることが期待されるポインターデータですか?
または、文字列の内容を a にコピーすることもできますがWCHAR*
、c++ アプリがサービスとして実行され、頻繁な割り当て/割り当て解除に関するヒープの断片化の問題があるためです。
ありがとう、ラグー
c++ - ワイド文字出力結果
wchar_t を使用すると、出力結果として数値が得られるのはなぜですか?
c++ - Wchar_t から文字列への変換
ファイルパスを確認できるように、 strFileNotifyInfo[1].FileName (Wchar_t) を文字列に変換したいと考えています。しかし、私はそれを機能させることはできません。
これが私のコードです:
c++ - -fshort-wchar を使用することの意味
Mac OS X システムでファイル wchar.h を調べているときに、__cplusplust が定義されておらず、wchar_t の最大サイズが 2 バイトの場合 (コンパイラ オプション -fshort を使用)、wcscpy、wcscat などの str 関数に相当する wchar_t が汚染されていることがわかりました。 -wchar)。
C プログラムでは、-fshort-wchar が定義されていると、そのような関数を使用できないようです。-fshort-wchar が使用されているときに wchar_t 関数を使用することの意味は何ですか?
なぜ -fshort-wchar を使用する必要があるのか疑問に思われるかもしれません。wchar_t のサイズが 2 バイトである Windows 用に最初に作成されたアプリケーションを移植しているためです。また、wchar_t 文字列に保持されているデータはファイルに書き込まれ、2 つのアプリケーション間で交換されます。
異なるプラットフォームでの wchar_t の変動性を処理する良い方法は何ですか? Windows での前提は、wchar_t が 16 ビットであることです。
c++ - 文字をワイド文字に変換する
関数を使用して、マルチバイト文字のシーケンスを対応するワイド文字のシーケンスに変換しようとしていmbstowcs_s
ます。しかし、私は次のヒープ破損の問題を抱え続けています。誰かがそれを修正する方法を教えてもらえますか?
これがサンプルコードです。デバッグするとき、それは常にdelete wc_name
問題を引き起こしている行です。私はそれがそうであるべきではないことを知っています。