Quale formato di utf dovrebbe aumentare il ritorno di wdirectory_iterator?
Domanda
Se un file contiene un & # 163; (cancelletto) quindi directory_iterator restituisce correttamente la sequenza di caratteri utf8 \ xC2 \ xA3
wdirectory_iterator usa caratteri ampi, ma restituisce comunque la sequenza utf8. È questo il comportamento corretto per wdirectory_iterator o lo sto usando in modo errato?
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
Soluzione
La codifica per caratteri ampi (oggetti wchar_t
) dipende dall'implementazione. Affinché la seconda istruzione (ovvero L " pound & # 163; sign ") funzioni, probabilmente dovrai cambiare le impostazioni locali sottostanti. L'impostazione predefinita è " C " che non conosce il personaggio della sterlina. Il valore esadecimale ha esito positivo poiché non è necessario mappare il glifo su un valore in una particolare codifica.
Nota: sto saltando la formulazione esatta dello standard w.r.t wchar_t, set di caratteri estesi ecc. per brevità.