問題タブ [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.

0 投票する
1 に答える
737 参照

c - ヌルバイト区切りのUNICODE C文字列

まず、これは次の複製ではありません: Turn a C string with NULL bytes into a char arraychar * . が Unicode の場合、指定された答えは機能しないためです。

問題は、ASCII char * の代わりに UTF-8 でエンコードされた char * を使用しようとしており、各文字の長さが異なるため、これが機能しないことだと思います。

Unicode 文字列で機能する同様のソリューションを持っている人はいますか?

私はこれに4時間以上頭をぶつけています。Cは私に同意しません。

編集:問題は、char * が ASCII ではなく UTF-8 になっていることだと思います

0 投票する
2 に答える
2501 参照

c++ - utf8 と utf16 の変換

たとえば、L"hao123--我的上网主页" のような wchar_t 文字列があります。これを utf8 に変換できます。

エンコーディングすると、出力文字列は「hao123锛嶏紞鎴戠殑涓婄綉涓婚〉」となりますが、最後にこれを書かなければなりません

文字列をプレーンテキストファイルに変換します。その形式は utf16 (他の人から知っています)、「hao123\uFF0D\uFF0D\u6211\u7684\u4E0A\u7F51\u4E3B\u9875」です。

C++ std 文字列で保存してからファイルに書き込む必要があるため、どうすれば変換できますか

"hao123锛嶏紞鎴戠殑涓婄綉涓婚〉" から "hao123\uFF0D\uFF0D\u6211\u7684\u4E0A\u7F51\u4E3B\u9875" へ char または C++ std 文字列 ?

誰でもヒントを教えてもらえますか?

前もって感謝します!

0 投票する
2 に答える
83843 参照

c++ - C++ で `wchar_t*` の長さを取得する

wchar_t*C ++で型の変数の長さを調べるにはどうすればよいですか?

以下のコード例:

dimObjPrefix含まれる文字数を知りたい

0 投票する
6 に答える
1340 参照

c - C の long を char* に変換する最も簡単な方法は何ですか?

Cでそれを行うクリーンな方法は何ですか?

私がこれまでに思いついた解決策はすべてかなり醜く、特に allocate_properly_size_whar_t は double float base math を使用しています。

0 投票する
4 に答える
1021 参照

c++ - Visual Studio 2005 での TCHAR を使用した C++ テンプレート関数の特殊化

テンプレート化された operator<< 関数を使用するロギング クラスを作成しています。ログ メッセージを書き込む前にワイドからナローへの変換を行えるように、テンプレート関数をワイド文字列に特化しています。TCHAR を正しく動作させることができません。特殊化を使用していません。アイデア?

関連するコードは次のとおりです。

そしてソースファイル

ここで、次のテスト プログラムを使用してこれらの機能を実行します。

上記のテストを実行すると、次のことがわかります。

残念ながら、それは正しくありません。変換できるように、最後のものを「TCHAR」にしたいと思います。Visual Studio のデバッガーによると、テスト 5 で呼び出されている関数にステップ インすると、型は wchar_t*& ですが、適切な特殊化を呼び出していません。アイデア?

関係があるかどうかはわかりませんが、これは Windows CE 5.0 デバイス上にあります。

0 投票する
2 に答える
2234 参照

string - C++/CLI で String^ の内部配列へのポインターを取得することは可能ですか?

目標は、必要なときに文字列データをコピーしないようにすることconst wchar_t*です。

答えはイエスのようですが、関数にPtrToStringCharsは独自の MSDN エントリがありません (KB とブログでトリックとしてのみ言及されています)。疑問に思ったので、皆さんに確認したいと思います。その機能を使用しても安全ですか?

0 投票する
3 に答える
52265 参照

c++ - char配列をwchar_t配列に変換する方法は?

cmdでは使えません

charでは、配列を配列に変換する方法はwchar_t?

0 投票する
1 に答える
444 参照

c - swprintfは、8ビット範囲外の文字をチョークします

これはOSXで発生しますが、UNIX-yOSには当てはまると思います。私はこのように見える2つの文字列を持っています:

デバッガーでは、test1は「D」のように見え、test2は「D」のように見えます(カーリーアポストロフィ付き)。次に、このコードを呼び出します。

最初のswprintf呼び出しは正常に機能します。2番目のものは-1を返します(そしてバッファーは変更されません)。

問題はロケールに関係していると思いますが、グーグルで調べても何も役に立ちませんでした。これは、私が見ている問題を再現する最も簡単な方法です。私が本当に興味を持っているのはvswprintf()ですが、それは密接に関連していると思います。

swprintfが8ビット範囲外のUnicode文字でチョークするのはなぜですか?とにかくこれを回避する方法はありますか?

0 投票する
3 に答える
2597 参照

c++ - wchar_t** を char** に変換するには?

私は argv を wchar_t** (以下を参照) として取得します。これは、Unicode を扱う必要があるためですが、それを char ** に変換する必要があります。どうやってやるの?

0 投票する
2 に答える
252 参照

c++ - 従来のTCHARコードとのインターフェースに適したスタイル

TCHARを広範囲に使用する他の誰かのコードを変更しています。コードでstd::wstringを使用する方が良い形式ですか?wstringは、widecharプラットフォームのTStringと同等である必要があるため、問題は発生しません。理論的根拠は、TCHARをサポートするよりも生のwstringを使用する方が簡単です...たとえば、boost:wformatを使用することです。

次のメンテナにとって、どちらのスタイルがより明確になりますか?文字列の複雑さを理解しようとして数時間を無駄にしました。wstringを使用するだけで、理解する必要のあるものの半分が削減されるようです。

...唯一の違いはアロケータです。

プログラムがWindow9xマシンに到達するというまれなケースでは、UTF-16文字列を8ビット文字に変換できるAPIレイヤーがまだあります。新しいコード開発にTCHARを使用しても意味がありません。 ソース