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
È stato utile?

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à.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top