問題タブ [wchar-t]
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++ - static_cast wchar_t* から int* または short* へ - なぜ違法なのですか?
Microsoft VC2005 および g++ コンパイラの両方で、次の結果はエラーになります。
win32 VC2005 の場合: sizeof(wchar_t) は 2 です
結果は
Mac OS X または Linux g++ の場合: sizeof(wchar_t) は 4
結果は
もちろん、いつでもreinterpret_castを使用できます。ただし、適切な整数型に static_cast することがコンパイラによって違法と見なされる理由を理解したいと思います。きっとちゃんとした理由があるのに…
c++ - C ++、WCHAR[]からstd::coutおよび比較
WCHAR[]をstd::coutに配置する必要があります...これはネイティブWifiAPIコールバックから渡されるPWLAN_CONNECTION_NOTIFICATION_DATAの一部です。
std :: cout<<var;を試してみました。ただし、最初の文字の数値アドレスを出力します。比較(var == L"some text"
)も機能しません。デバッガーは期待値を返しますが、比較は0を返します。この配列を標準の文字列(std :: string)に変換するにはどうすればよいですか?
前もって感謝します
c++ - WindowsターミナルでUnicode文字を出力する
この 1 週間、私は友人と一緒に C++ でローグライクゲームに取り組んでいました。ほとんどの場合、言語も学びます。
私は使用しています:
- pdcurses
- ウィンドウズ7
- ビジュアル スタジオ C++
wchar_t
コンソールの好きな場所に出力します。\u263B (☻) などの一部の Unicode 文字の出力には成功しましたが、\u2638 (☸) などの他の文字はクエスチョン マーク (?) になってしまいます。
出力に使用する関連コードを次に示します。
もちろん、退屈な ANSI 文字に頼ることもできます。しかし、完全な Unicode セットの文字で遊べるというのは本当にすばらしいことです。
要約すると、Unicode 文字が正しく出力されるようにするにはどうすればよいでしょうか?
編集:
わかりました。エンコーディングが正しく機能していることを確認しました。問題は、端末を強制的に Unicode リッチの font face に切り替える必要があることです。これを行うクロスプラットフォームの方法はありますか? これを行うためのWindows固有の方法さえありますか?
gcc - Windows および Linux で String から const wchar_t* への変換関数を機能させる方法
私は MSVCC / Windows 用に書かれたプロジェクトに取り組んでおり、GCC / Linux に移植する必要があります。プロジェクトには独自の文字列クラスがあり、そのデータを Qt の QString に格納します。wchar_t* への変換には、もともとこのメソッドがありました (Windows 用):
unicode() は QChar (16 ビットの長さ) を返すため、これは Windows では wchar_t が 16 ビットであるため機能しましたが、GCC では wchar_t の長さが 32 ビットであるため、機能しなくなりました。私はこれを使用してそれを解決しようとしました:
これに関する問題は、この関数が返されたときにオブジェクトがもう生きていないため、これがうまくいかないことです。この問題を解決するには、次のいずれかの方法しかないと思います。
- String::c_str() を使用せず、 .toStdString().c_str() を直接呼び出します
- GCC が wchar_t を 16 ビット型として扱うようにする
可能性 1 は、私にとって数時間の不必要な作業を意味し、可能性 2 が可能かどうかはわかりません。私の質問は、この問題を最もよく解決するにはどうすればよいですか? 有益な提案をいただければ幸いです。ありがとうございました。
c++ - .c_str() 奇妙ですか? 韻も理由もなくデータが変更されますか?
私はこの単純な機能を持っています:
その関数の 2 行目に、正しい wchar_t* があります。しかし、私が戻ってくると、データはガベージデータに切り替わります。間に機能はありません。何が得られる?!
c++ - Cプリプロセッサで連結文字列をワイド文字に変換する方法は?
連結によって形成された多くの定数文字列(数字など)があるプロジェクトに取り組んでいます。
たとえば、メッセージやエラーを出力するときに、コード内のどこにいるかを知るために使用できる文字列にLOCATION
フォーマットするマクロが__FILE__
あります。__LINE__
したがって、これは「file.cpp(42)」のような場所をフォーマットします。問題は、結果をワイド文字列に変換しようとしたときです。
これは GCC で問題なく動作し、L"file.cpp(42)" がコードに挿入されます。ただし、MSVC++ (Visual C++ 2008 Express を使用) でこれを試みると、エラーが発生します。
L
プレフィックスが式の最初の項にのみ追加されることを理解しています。私もこれを試しました:
これは「機能します」がL"\"file.cpp\" \"(\" \"42\" \")\""
、特にこのマクロが他のマクロと比較して単純であることを考えると、明らかにあまり便利ではない (そして私が探しているものではない) 文字列を提供します。
それで、私の質問は次のとおりです。MSVC ++の式全体に適用するにはどうすればよいので、GCCで得ているのと同じ結果を得ることができますか? 全幅のトークンを含む 2 番目の文字列を作成したくはありません。これは、マクロごとに 2 つのマクロを維持する必要があり、あまり便利ではなく、バグにつながる可能性があるためです。さらに、各文字列の狭いバージョンも必要なので、残念ながらすべて広い文字列を使用することもできません。
c++ - wchar_tはunsignedshortの単なるtypedefですか?
たとえば、次のようになります。
次のように翻訳します。
c++ - C ++:関数名に文字の種類を具体的に記載せずに読み取り/書き込みを行う良い方法はありますか?(cout vs wcoutなど)
テンプレートに基づいてファイルからプログラムを読み取るのに問題があります。次に例を示します。
これは、このクラスをでインスタンス化すると機能しますが、 (明らかに)<char>
使用すると問題が発生します。<wchar_t>
クラスの外では、私は以下を使用しています:
このデータ構造体(これはa)からすべての情報を書き込むために、予測どおり、配列でないmap<basic_string<T>, int>
場合はcoutが爆発します。iter->first
char
私はオンラインで調べましたが、コンセンサスはwcoutを使用することですが、残念ながら、このプログラムではコンパイル時にテンプレートを変更できる必要があるため(<char>
-> <wchar_t>
)、coutまたはwcoutを選択するだけでどうすればよいかわかりません。つまり、多くのコードを変更せずにワイド文字を読み書きする方法がない限りです。
この説明がぎこちなく複雑に聞こえる場合は、お知らせください。できる限り対応させていただきます。
c++ - wchar_t値をコンソールに出力するにはどうすればよいですか?
例:
このコードは、住所などのHEX値のみを出力します。wchar_t文字列を出力する方法は?
iphone - wchar_tをNSStringにコピーする方法は?
stringWithFormat @ "%ls"を使用して実行していますが、コピーされた最初の文字のみが表示されます。これにより、1バイト文字であると想定されているように見えます。
何か案は?