Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



Řazení textů

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Řazení textů

Autor: Radimoid

17:24:17 22.08.2011

Dobrý den,
pro seřazení textů podle abecedy používám následující algoritmus:

/// Porovnání textu
bool IsLessOrEqNoCase(const CString& str1, const CString& str2)
{
return (_tcsicoll(str1, str2) <= 0) ? true : false;
// zde jsem zkoušel i str1:Collate(str2)
}

/// Seradí vektor textu podle abecedy
void SortStringVector(std::vector& strs, const CString& locale)
{
_tsetlocale(LC_ALL, locale)
sort(strs.begin(), strs.end(), IsLessOrEqNoCase);
}

Ale ať dám jako locale "English" nebo "Czech", vždy mi seřadí texty A;Z;č jako A;č;Z.
I když pro "English" by to mělo být A;Z;č.

SetLocale se chytá správně, protože správně nastaví desetinnou čárku v číslicích na tečku pro "English" nebo na čárku pro Czech.

CString je UNICODE CStringW.

Nevíte co je třeba nastavit, aby se opravdu řadilo podle zadané abecedy bez ohledu na nastavení systému?

Používám VC++ 2005, Windows XP.

Děkuji za odpovědi

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: