localeconv: Taşınabilirdir ama …
Önceki Yerel Bilgisine Erişim Sonraki
localeconv: Taşınabilirdir ama …
ISO C topluluğu localeconv işlevini setlocale işlevi ile birlikte anar. localeconv işlevi, biçare tasarımın ana parçasıdır. Genişletilebilir olmaması ve LC_MONETARY ve LC_NUMERIC kategorileri ile ilgili bilgileri sağlamanın dışında bir bilginin gerekmediği durumlarda kullanımı tercih edilir. Buna rağmen, çok taşınabilir olduğundan sadece bu durumda özellikle kullanılmalıdır. strfmon işlevi seçili yerele göre bu bilgiyi parasal gösterimleri biçimlemekte kullanılır.
struct lconv *localeconv
(void)
işlev
localeconv işlevi sayısal ve parasal değerlerin o anki yerele göre biçimlenmesi için gereken bilgiyi içeren elemanlardan oluşan bir yapının göstericisi ile döner.
Yapıda ve yapının içeriğinde değişiklik yapmamalısınız. Yapı localeconv veya setlocale işlevlerinin sonraki çağrıları ile tekrar düzeltilir. Fakat bunlar dışında kütüphanede bu yapıyı düzelten başka işlev yoktur.
struct lconv
veri türü
Bu, localeconv işlevinin dönüş değerinin türüdür. Elemanları bundan sonraki alt bölümlerde açıklanmıştır.
struct lconv yapısının char türünde bir elemanı varsa ve değeri CHAR_MAX ise, bu, yerelin bu parametre ile ilgili bir değer içermediği anlamına gelir.
Soysal Sayısal Biçimleme Parametreleri
Bunlar struct lconv yapısının standart elemanlarıdır; başkaları da olabilir:
char *decimal_point
char *mon_decimal_point
Bunlar sayısal ve parasal gösterimler için ondalık ayraçlardır. C yerelinde decimal_point değeri "." iken mon_decimal_point değeri ""'dir.
char *thousands_sep
char *mon_thousands_sep
Bunlar sayısal ve parasal gösterimlerde ondalık ayracın solundaki sayının genellikle binlik gruplara ayrılmasında kullanılan ayraçlardır. C yerelinde her iki üyeninde değeri ""’dir (boş dizge).
char *grouping
char *mon_grouping
Bunlar sayısal ve parasal gösterimlerde ondalık ayracın solundaki sayının kaç rakamlık gruplara ayrılacağını belirtmekte kullanılır. grouping sayısal, mon_grouping ise parasal gösterimlere uygulanır.
Bu dizgelerin içindeki ayrı ayrı char türünde tanımlanabilecek her sayı char türünde bir tamsayı olarak yorumlanır. Dizgenin içindeki her sayı (soldan sağa) grupların (ondalık ayraçtan itibaren sağdan sola) rakam sayısını verir. Son sayı 0 ise kalan gruplar önceki sayıya göre gruplanır; CHAR_MAX ise kalan sayıya gruplama uygulanmaz, başka bir deyişle kalan sayı ayraçsız olabildiğince geniş bir grup olur.
Örneğin, grouping için "\04\03\02" değeri belirtilmişse, 123456787654321 sayısı 12, 34, 56, 78, 765, 4321 şeklinde gruplanır. Yani sondaki 4'lü bir grup, ondan önceki 3'lü bir grup, ondan öncekiler de 2'li gruplar halinde ayrılır. Gruplama ayracı olarak , belirilmişse sayı 12,34,56,78,765,4321 olarak basılır.
"\03" değeri tekrarlanan 3'lü gruplarla gruplama yapılacağını belirtir. Normalde ABD'de böyle bir gruplama kullanılır.
Standart C yerelinde grouping ve mon_grouping için her ikisine de gruplama yapılmayacağı anlamına gelen "" değeri belirtilmiştir.
char int_frac_digits
char frac_digits
Bunlar parasal gösterimin sırayla uluslararası ve yerel biçimlendirmesinde ondalık ayracın sağında kaç rakamın gösterileceğini belirtmekte kullanılır. (Çoğunlukla ikisine de aynı değer atanır.)
Standart C yerelinde, her iki üye de "belirtilmemiş" anlamına gelen CHAR_MAX değerini içerir. ISO C standardı bu değere rastlandığında ne yapılacağını belirlememiştir; bizim tavsiyemiz ondalık ayraçtan sonra hiçbir rakam gösterilmeyeceği şeklinde yorumlanmasıdır. (C yerelinin mon_decimal_point değeri olarak boş dizge belirttiğini gözönüne alırsanız bir rakamın gösterilmesi sayının değerinin değişmesi demektir!)
Para sembolünün Basılması
struct lconv yapısının para sembolü ile ilgili üyeleri para birimini tanımlayan sembolü basmak için kullanılır. Amerikan doları için uluslararası ve yerel sembol aynıdır ve bu sembol $'dır.
Her ülkenin iki standart para birimi sembolü vardır. Yerel para sembolü ülke içinde, uluslararası para sembolü ise uluslararası kullanımda yerel sembolün kullanımının sorun yaratmaması için kullanılan para sembolüdür.
Örneğin, birçok ülke kendi para birimi olarak dolar kullanır. Yerel kullanımda sorun çıkarmayan bu sembol, uluslararası kullanımda Amerikan dolarından ve diğer dolarlardan ayrılması gerekir. Kanada ve Avustralya için böyledir.
char *currency_symbol
Yerelin yerel para birimi sembolüdür.
Standart C yerelinde, bu üyenin değeri "belirtilmemiş" anlamına gelen "" boş dizgesidir. ISO C standardı bu değerin nasıl yorunlanacağını belirlememiştir; bizim tavsiyemiz boş dizge olarak yorumlanmasıdır.
char *int_curr_symbol
Yerelin uluslararası para birimi sembolüdür.
int_curr_symbol değeri normalde uluslarası standart tarafından belirlenen üç harfli bir kısaltmadır [ISO 4217 Codes for the Representation of Currency and Funds] (Para ve Fonların gösterimi için ISO 4217 kodları) ve bu kısaltmadan sonra tek karakterlik bir ayraç gelir (çoğunlukla boşluk).
Standart C yerelinde, bu üyenin değeri "belirtilmemiş" anlamına gelen "" boş dizgesidir; bizim tavsiyemiz boş dizge olarak yorumlanmasıdır.
char p_cs_precedes
char n_cs_precedes
char int_p_cs_precedes
char int_n_cs_precedes
Bu üyelerin değeri 1 ise, para sembolleri para değerinin önüne, 0 ise para değerinin sonuna konur. p_cs_precedes ve int_p_cs_precedes değerleri pozitif miktarlara, n_cs_precedes ve int_n_cs_precedes değerleri ise negatif miktarlara uygulanır.
Standart C yerelinde bu üyelerin hepsine "belirtilmemiş" anlamına gelen CHAR_MAX değeri atanmıştır. ISO C standardı bu değerin nasıl yorumlanacağını belirtmemiştir. Bizim tavsiyemiz çoğu ülkede para sembolünün para miktarının önüne konulmasından hareketle para sembolünün önce basılacağı biçimde yorumlanmasıdır. Başka yönden bakarsak değerin sıfırdan farklı bir değer olarak (1 olarak) yorumlanması önerilir.
İsimleri int_ ile başlayan üyeler int_curr_symbol'e, diğerleri currency_symbol'e uygulanır.
char p_sep_by_space
char n_sep_by_space
char int_p_sep_by_space
char int_n_sep_by_space
Bu üyelerin değeri 1 ise, para sembolü ile para miktarı arasına bir boşluk konur, 0 ise boşluk konmaz. p_sep_by_space ve int_p_sep_by_space üyeleri pozitif (veya sıfır) para miktarlarına, n_sep_by_space ve int_n_sep_by_space üyeleri ise negatif para miktarlarına uygulanır.
Standart C yerelinde, bu üyelerin hepsine "belirtilmemiş" anlamına gelen CHAR_MAX değeri atanmıştır. ISO C standardı bu değerin nasıl yorumlanacağını belirtmemiştir. Tavsiyemiz değerin sıfırdan farklı bir değer olarak (1 olarak) yorumlanmasıdır (yani boşluk konması).
İsimleri int_ ile başlayan üyeler int_curr_symbol'e, diğerleri currency_symbol'e uygulanır. int_curr_symbol için özel bir durum vardır. Standart uluslararası değerler sembolden sonra bir boşluk içerir (Para sembolünün para miktarından önce kullanılması ve arada boşluk bırakılması için). Bu durumda bu boşluğun basılmasının önlenmesine (bilhassa para sembolünün para miktarından sonra basıldığı durumda) dikkat edilmelidir.
Para Miktarına İşaret Basılması
struct lconv yapısının bu üyelerinde parasal gösterimde (varsa) işaretin nasıl basılacağını belirtilir.
char *positive_sign
char *negative_sign
Bunlar pozitif (veya sıfır) ve negatif para miktarlarını belirtmekte kullanılacak işaretleri içeren dizgelerdir.
Standart C yerelinde, bu üyelerin her ikisine de "belirtilmemiş" anlamına gelen "" boş dizgesi atanmıştır.
ISO C standardı bu değerlerin nasıl yorumlanacağını belirtmemiştir. Tavsiyemiz pozitif işareti positive_sign boş dizge olarak belirtilse dahi bulduğunuz gibi, negatif işareti de negative_sign boş dizge olarak belirtilse bile - olarak basılmasıdır.
char p_sign_posn
char n_sign_posn
char int_p_sign_posn
char int_n_sign_posn
Bu üyeler pozitif ve negatif miktarların işaretlerinin yerini belirtmede kullanılan küçük tamsayılar içerir. Olası değerler şunlardır:
0
Para sembolü ve miktar parantez içine alınır.
1
İşaret, para sembolü ve para miktarından önce basılır.
2
İşaret, para sembolü ve para miktarından sonra basılır.
3
İşaret, para sembolünden hemen önce basılır.
4
İşaret, para sembolünden hemen sonra basılır.
CHAR_MAX
"Belirsiz". Standart C yerelinde her iki üye de bu değere sahiptir.
ISO standardı değerin CHAR_MAX olması halinde ne yapılacağını belirlememiştir. Tavsiyemiz, işaretin para sembolünden sonra basılmasıdır.
İsimleri int_ ile başlayan üyeler int_curr_symbol ile diğerleri currency_symbol ile uygulanır.
Önceki Üst Ana Başlık Sonraki
Yerel Bilgisine Erişim Başlangıç Yerel Verisine Noktasal Erişim
Bir Linux Kitaplığı Sayfası