Sic Parvis Magna

31 Ağustos 2025 Pazar

C/CPP - Fonksiyonlar ve Kullanım Yöntemleri #15

Ağustos 31, 2025 Posted by unexpected , , , No comments

newlocale

Yeni bir locale oluşturur.

Syntax
locale_t newlocale(int category_mask, const char* locale, locale_t base);

Params

  • category_mask: Bir katagori seçilir.
  • locale: Local adı verilir. Örn: en_US.UTF-8, C eğer NULL olursa yeni oluşturur.
  • base: Sıfır olarak tanımlanır.

Kategori Mask Listesi:

  • LC_CTYPE_MASK
  • LC_NUMERIC_MASK
  • LC_TIME_MASK
  • LC_COLLATE_MASK
  • LC_MONETARY_MASK
  • LC_MESSAGES_MASK
  • LC_PAPER_MASK
  • LC_NAME_MASK
  • LC_ADDRESS_MASK
  • LC_TELEPHONE_MASK
  • LC_MEASUREMENT_MASK
  • LC_IDENTIFICATION_MASK
  • LC_ALL_MASK
example.cpp
#include <stdio.h>
#include <locale.h>

int main(int argc, char** argv)
{	
	locale_t loc = newlocale(LC_ALL_MASK, "en_US.UTF-8", (locale_t)0);
	if(!loc)
	{
		printf("newlocale error\n");
		return -1;
	}
	
	return 0;
}

duplocale

Verilen locale_t nesnesinin kopyasını oluştur. Başarılı olursa locale_t döner. Başarısız durumun da NULL olarak döner.

Syntax
locale_t duplocale(locale_t dataset);

Params

  • dataset: locale_t tipinde bir değer alır.
example.cpp
#include <stdio.h>
#include <locale.h>

int main(int argc, char** argv)
{
	...
	
	locale_t copy_loc = duplocale(loc);
	if(!copy_loc)
	{
		printf("duplocale error\n");
		return -1;
	}
	
	return 0;
}

freelocale

Oluşturulmuş locale_t nesnelerini serbest bırakır.

Syntax
void freelocale(locale_t dataset);

Params

  • dataset: locale_t tipinde bir değer alır.
example.cpp
#include <stdio.h>
#include <locale.h>

int main(int argc, char** argv)
{
	...
	
	freelocale(loc);
	freelocale(copy_loc);
	
	return 0;
}

uselocale

Aktif bir thread'in localini değiştirir.

Syntax
locale_t uselocale(locale_t dataset);

Params

  • dataset: Eğer LC_GLOBAL_LOCALE verilirise thread, tekrar global locale’i kullanmaya başlar. NULL verlirse sadece mevcut thread’in aktif locale’i döndürülür (değişiklik yapılmaz). Bir locale_t nesnesi verilirse o locale, geçerli thread için aktif olur.
example.cpp
#include <stdio.h>
#include <locale.h>

int main(int argc, char** argv)
{
	...
	
	locale_t thread_loc = uselocale(loc);
	if(!thread_loc)
	{
		printf("uselocale error\n");
		return -1;
	}
	
	return 0;
}