Pergunta

Se um arquivo contém uma £ (libra) assinar, em seguida, directory_iterator corretamente retorna a seqüência de caracteres utf8 \ xC2 \ XA3

wdirectory_iterator usa caracteres largos, mas ainda retorna a seqüência utf8. É este o comportamento correto para wdirectory_iterator, ou estou a usá-lo de forma incorrecta?

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
Foi útil?

Solução

A codificação de caracteres de largura (objetos wchar_t) é dependente da implementação. Para a segunda instrução (ou seja, L "libra £ sinal") para o trabalho, você provavelmente terá que alterar a localidade subjacente. O padrão é "C", que não sabe sobre o personagem libra. O valor hexadecimal sucede uma vez que este não requer o mapeamento do glifo para um valor em uma codificação específica.

Nota:. Estou pular o texto exato do wchar_t w.r.t padrão, conjuntos de caracteres estendidos etc para abreviar

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top