Thread View: pl.comp.lang.c
5 messages
5 total messages
Started by Borneq
Mon, 09 May 2016 04:51
Jak zaincludować <locale> ?
Author: Borneq
Date: Mon, 09 May 2016 04:51
Date: Mon, 09 May 2016 04:51
18 lines
1491 bytes
1491 bytes
Jest to niezbędne do sortowania bez rozróżniania wielkości liter
bool compare(DirItem it0, DirItem it1)
{
locale loc;
return (tolower(it0.name,loc)<tolower(it1.name,loc));
}
Jednak gdy próbuję #include <locale>
to otrzymuję błąd nie w swoim kodzie ale w xlocale
Error C2440 'type cast': cannot convert from
'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' to
'unsigned char' controlSum c:\program files (x86)\microsoft visual
studio 14.0\vc\include\xlocale 654
Error C2440 'type cast': cannot convert from 'unsigned char' to
'std::string' controlSum c:\program files (x86)\microsoft visual studio
14.0\vc\include\xlocale 687
Re: Jak zaincludować <locale> ?
Author: M.M.
Date: Mon, 09 May 2016 09:55
Date: Mon, 09 May 2016 09:55
22 lines
2072 bytes
2072 bytes
On Monday, May 9, 2016 at 6:51:36 AM UTC+2, Borneq wrote:
> Jest to niezbędne do sortowania bez rozróżniania wielkości liter
>
> bool compare(DirItem it0, DirItem it1)
> {
> locale loc;
> return (tolower(it0.name,loc)<tolower(it1.name,loc));
> }
>
> Jednak gdy próbuję #include <locale>
> to otrzymuję błąd nie w swoim kodzie ale w xlocale
>
> Error C2440 'type cast': cannot convert from
> 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' to
> 'unsigned char' controlSum c:\program files (x86)\microsoft visual
> studio 14.0\vc\include\xlocale 654
> Error C2440 'type cast': cannot convert from 'unsigned char' to
> 'std::string' controlSum c:\program files (x86)\microsoft visual studio
> 14.0\vc\include\xlocale 687
A jakby używać tylko utf?
Pozdrawiam
Re: Jak zaincludować <locale> ?
Author: Borneq
Date: Mon, 09 May 2016 14:41
Date: Mon, 09 May 2016 14:41
13 lines
1356 bytes
1356 bytes
W dniu 09.05.2016 o 11:55, M.M. pisze:
> On Monday, May 9, 2016 at 6:51:36 AM UTC+2, Borneq wrote:
>> Jest to niezbędne do sortowania bez rozróżniania wielkości liter
>>
>> bool compare(DirItem it0, DirItem it1)
>> {
>> locale loc;
>> return (tolower(it0.name,loc)<tolower(it1.name,loc));
>> }
Co zamiast string do Unicode i co zamiast tolower?
Bo chciałbym przekonwertować na Uniocode i porównać
Re: Jak zaincludować <locale> ?
Author: Borneq
Date: Wed, 11 May 2016 13:30
Date: Wed, 11 May 2016 13:30
6 lines
1269 bytes
1269 bytes
W dniu 09.05.2016 o 16:41, Borneq pisze: > Co zamiast string do Unicode i co zamiast tolower? > Bo chciałbym przekonwertować na Uniocode i porównać Jak zrobić taką prostą rzecz, jak sortowanie nazw plików w katalogu działające zarówno dla Windows jak i Linuxa gdzie nazwy nie są Unicode?
Re: Jak zaincludować <locale> ?
Author: Marek Borowski
Date: Fri, 13 May 2016 18:24
Date: Fri, 13 May 2016 18:24
26 lines
1867 bytes
1867 bytes
On 11.05.2016 15:30, Borneq wrote:
> W dniu 09.05.2016 o 16:41, Borneq pisze:
>> Co zamiast string do Unicode i co zamiast tolower?
>> Bo chciałbym przekonwertować na Uniocode i porównać
>
> Jak zrobić taką prostą rzecz, jak sortowanie nazw plików w katalogu
> działające zarówno dla Windows jak i Linuxa gdzie nazwy nie są Unicode?
>
Spróbuj
int pl_cmp(const std::string& s1, const std::string& s2)
{
// std::locale pl("pl_PL.ISO8859-2"); dla linuxa z latin2
// std::locale pl("Polish_Poland.1250"); dla windows z CP1250
std::locale pl("pl_PL.UFT8");
return std::use_facet<std::collate<char>>(pl).compare(s1.c_str(),
s1.c_str() + s1.size(),
s2.c_str(), s2.c_str() + s2.size());
}
Niestety nazwy locali inne niż "C" nie są ustandaryzowane i wcale nie
muszą być dostępne.
Pozdrawiam
Marek
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads