🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

5 total messages Started by Borneq Mon, 09 May 2016 04:51
Jak zaincludować <locale> ?
#308530
Author: Borneq
Date: Mon, 09 May 2016 04:51
18 lines
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> ?
#308531
Author: M.M.
Date: Mon, 09 May 2016 09:55
22 lines
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> ?
#308532
Author: Borneq
Date: Mon, 09 May 2016 14:41
13 lines
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> ?
#308533
Author: Borneq
Date: Wed, 11 May 2016 13:30
6 lines
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> ?
#308534
Author: Marek Borowski
Date: Fri, 13 May 2016 18:24
26 lines
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