質問

ファイルに£が含まれている場合(ポンド)記号、directory_iteratorはutf8文字シーケンス\ xC2 \ xA3

を正しく返します

wdirectory_iteratorはワイド文字を使用しますが、utf8シーケンスを返します。これはwdirectory_iteratorの正しい動作ですか、それとも間違って使用していますか?

AddFile(testpath, "pound£sign"); 
wdirectory_iterator iter(testpath);
TS_ASSERT_EQUALS(iter->leaf(),L"pound\xC2\xA3sign"); // Succeeds
TS_ASSERT_EQUALS(*iter, L"pound£sign"); // Fails
役に立ちましたか?

解決

ワイド文字( wchar_t オブジェクト)のエンコーディングは実装に依存します。 2番目のステートメント(つまり、L"ポンド£ sign")を機能させるには、基本となるロケールを変更する必要があります。デフォルトは「C」です。ポンド文字については知りません。 16進数の値は、グリフを特定のエンコードの値にマッピングする必要がないため成功します。

注:簡潔にするために、標準のw.r.t wchar_t、拡張文字セットなどの正確な表現は省略しています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top