2

ライブラリを char から TCHAR に移植しています。MSDN によると、このフラグメントの count パラメータは、バイト数ではなく、マルチバイト文字の数です。それで、私はこれを正しく理解しましたか?VC9 の私のプロジェクト プロパティは「Unicode 文字セットを使用する」と言っています。それは正しいと思いますが、それがカウント パラメータにどのように影響するかはわかりません。

_tcsncmp(access, TEXT("ftp"), 3); //or do i want _tcsnccmp?

「Windows プラットフォームでのみサポートされています。_mbsncmp と _mbsnbcmp は、strncmp のマルチバイト バージョンです。_mbsncmp は最大で count 個のマルチバイト文字を比較し、_mbsnbcmp は最大で count バイトを比較します。どちらも現在のマルチバイト コード ページを使用します。

_tcsnccmp と _tcsncmp は、それぞれ _mbsncmp と _mbsnbcmp に対応するジェネリック関数です。_tccmp は _tcsnccmp と同等です。」

同様の質問は、_tcslen と _tcsclen です。

4

2 に答える 2

4

はい、あなたはそれを正しく理解しています。

ただし、問題は、なぜそれを TCHAR に移植するのかということです。これは、_UNICODE 定義の影響を受けやすいものです。

UTF8 と char* を使用しないのはなぜですか?

于 2010-06-07T21:58:11.180 に答える
2

TCHAR_UNICODEは、定義されているかどうかに応じて8ビットまたは16ビットのいずれかのタイプです。ただし、UTF-8は常に8ビットコードユニットを使用するため、使用するのTCHARはばかげています。を使用するだけcharです。

TCHARは、Windows APIの2つのバージョンの存在に関連付けられています。レガシー8ビットコードページを使用する「A」関数と、UTF-16を使用する「W」関数です。 UTF-8はサポートされていません_UNICODEWindowsでUTF-8を使用するには、API呼び出し用にUTF-8文字列をUTF-16に明示的に変換しますが、またはからは何の助けも得られませんTCHAR

于 2010-06-09T00:11:12.347 に答える