問題タブ [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++ - RegisterClassExからエラーコード87(無効なパラメータ)が表示されるのはなぜですか?
これがコードです
このコードは、Forgers Win32チュートリアルから直接引用したものです(L""
必要に応じてwchar_tを使用)。それでも、WinXPSP3x86およびVC2008ExpressSP1で動作させることはできません。
c++ - コードの正確性を維持しながらiconvを使用する
私は現在iconv
、異なるエンコーディングのドキュメントを変換するために使用しています。
このiconv()
関数には次のプロトタイプがあります。
これまでは、タイプのバッファーを変換するだけで済みましたが、タイプのバッファーをchar*
変換する必要があることにも気づきましたwchar_t*
。実際、このようなバッファーiconv
専用のエンコード名もあり"wchar_t"
ます。このエンコードは、オペレーティングシステムの設定に適合します。つまり、私のコンピューターでは、WindowsではUCS-2を、LinuxではUTF-32を参照します。
しかし、ここに問題があります。バッファがある場合は、で使用するためのバッファwchar_t*
にできますが、実装で定義された動作に直面します。キャストに関してすべてのコンパイラが同じように動作するかどうかはわかりません。reinterpret_cast
char*
iconv
ここで何をすればいいですか?
c++ - ANSI文字(char)からUnicode文字(wchar_t)に、またはその逆に変換するにはどうすればよいですか?
ANSI文字(char)からUnicode文字(wchar_t)に、またはその逆に変換するにはどうすればよいですか?
この目的のためのクロスプラットフォームのソースコードはありますか?
c - Win32コマンドラインアプリケーションでargvをワイド文字に変換する方法は?
プログラムで C 用の win32 api を使用してシリアル ポートから読み取っていますが、これはかなり低レベルのもののようです。シリアル ポートから読み取るより良い方法がないと仮定すると、CreateFile 関数には LPCWSTR 引数が含まれます。私が読んだところ、LPCWSTR は wchar_t 型のようです。まず、wchar と char の違いがよくわかりません。ANSI と Unicode については読んだことがありますが、それが自分の状況にどのように当てはまるかはよくわかりません。
私のプログラムは wmain ではなく main 関数を使用しており、コマンド ラインから引数を取得して wchar_t 変数に格納する必要があります。その場で弦を作っただけなら、これができることがわかりました。
L が char 配列を wchar 配列に変換するように見えるためです。ただし、私が行うと機能しません。
明らかに構文エラーだからです。私の質問は、通常の文字列を wchar_t 文字列に変換する簡単な方法はありますか?
または、このUnicodeのものを完全に回避し、WindowsでCを使用して別の方法でシリアルから読み取る方法はありますか..
c++ - /Zc:wchar_t- のマイナスは何を意味しますか?
最近、このフラグの存在 (または不在) が原因でリンクの問題が発生しました。
/Zc:wchar_t-
docsを読みましたが、末尾のマイナスについては言及されていません。しかし、それについてのすべての議論にはそれが含まれているようです。どういう意味ですか?
visual-c++ - tchar[] から LPCWSTR への変換
FindFirstFile を使用してディレクトリをトラバースし、dll を検索しています。
dll を取得したら、WIN32_FIND_DATA 構造体の cfilename を使用してその dll の名前を取得します。
ここで、dll への絶対パスを期待する関数 LoadLibrary() に dll を渡したいと思います。
ここに問題があります: WIN32_FIND_DATA 構造体の cfilename は TCHAR[] 配列を返しますが、これは dll の名前であり、そのパスではありません。パスを名前に連結して、絶対パスを取得する必要があります。
LoadLibrary() は、パラメーターとして LPCWSTR を想定しています。
助けが必要です: (1) WIN32_FIND_DATA の cfilename によって返された TCHAR[] を LPCWSTR に変換するには (2) 上記の変換された LPCWSTR を定義済みのパス (L"C:\dir\example\") と連結して、絶対パスを取得します。
正しい答えへの微調整は私の一日を作ります:)
よろしく、アンディ
visual-c++ - wcscat_s を使用して 2 つの wchar_t* を連結すると、アクセス違反エラーが発生する
wcscat_s 関数を使用して、1 つの wchar[] を wchar_t* に連結しようとしています。アクセス違反エラーが発生し続けます。
ここにコードがあります
私が間違っている提案はありますか?
PSwchar_t path[]
の代わりに使用するとwchar_t* path
、デバッグモードで破損警告が表示されますが、続行をクリックするとアプリケーションを壊すことなく実行されます。リリース モードでは、エラーはまったく表示されません。
よろしく、アンディ
更新: ここにコード全体があります: 私が達成したいのは、dll に埋め込まれたリソースから wave ファイルを再生することです...
c - 関数に渡されたwchar_t配列
VisualStudio2010を使用してWindowsでCプログラムを作成しています。
wchar_t配列を関数に渡しています。
デバッガーを使用してbla、sizeof(bla)を監視しましたが、メインではblaは型ですが、mymethodではblaは型でwchar_t
あり、があります。sizeof(bla) = 2048
unsigned short*
sizeof(bla) = 4
なぜそうなのですか?
編集された配列を返す代わりに、メソッドが配列を変更できるように、blaをメソッドに渡したいと思いました。ただし、sizeof(bla)を4ではなく1024にしたいので、swprintfは機能しません。
乾杯。
c - char と wchar_t
wchar_t* 文字列を出力しようとしています。コードは以下のとおりです。
質問:
行 1 の char* ポインターに CJK 文字を割り当てるべきではないようですが、行 3 の出力は正しいので、なぜですか? 行 3 の printf() で非 ASCII 文字を取得するにはどうすればよいですか? どういうわけかエンコーディングを知っていますか?
2 行目と 4 行目のコードは正しいと思いますが、4 行目の出力が得られなかったのはなぜですか?