wcstombs, _wcstombs_l
Geniş bir karakter dizisi çok baytlı karakterlere karşılık gelen bir dizi dönüştürür.Bu işlevler daha güvenli sürümlerinin kullanılabilir olduğunu; see wcstombs_s, _wcstombs_s_l.
size_t wcstombs(
char *mbstr,
const wchar_t *wcstr,
size_t count
);
size_t _wcstombs_l(
char *mbstr,
const wchar_t *wcstr,
size_t count,
_locale_t locale
);
template <size_t size>
size_t wcstombs(
char (&mbstr)[size],
const wchar_t *wcstr,
size_t count
); // C++ only
template <size_t size>
size_t _wcstombs_l(
char (&mbstr)[size],
const wchar_t *wcstr,
size_t count,
_locale_t locale
); // C++ only
Parametreler
mbstr
Çok baytlı karakter dizisi adresidir.wcstr
Geniş bir karakter dizisi adresidir.count
Çok baytlı çýktý dizesinde depolanan bayt sayısı.locale
Kullanılacak yerel ayarı.
Dönüş Değeri
wcstombs Başarıyla baytlı dizeye dönüştürür sonlandırma hariç çıktı çok baytlı dizeye yazılan bayt sayısını verir NULL (varsa).mbstr Bağımsız değişkeni NULL, wcstombs gereken boyut hedef dize bayt cinsinden döndürür.wcstombs Karşılaştığında, çok baytlı karakter dönüştüremiyor geniş bir karakter yazmak için artığını –1 verir size_t ve ayarlar errno için EILSEQ.
Notlar
wcstombs İşlevi tarafından gösterilen geniş karakter dize dönüştürür wcstr için karşılık gelen çok baytlı karakterleri ve sonuçları saklar mbstr dizi.count Parametresi gösterir çok baytlı çýktý dizesinde depolanan bayt sayısı (yani boyutunu mbstr).Genel olarak, geniş karakter dizesi dönüştürürken kaç bayt gerekli olacaktır bilinmemektedir.Bazı geniş karakter çıktı dizesindeki tek bir bayt gerektirir; diğerleri ise iki gerektirir.Çok baytlı çıktı dizesinin Giriş dizesi geniş her karakter için iki bayt ise (geniş karakter dahil olmak üzere NULL), sonuç sığdırmak için garanti edilir.
wcstombs Önce ya da ne zaman geniş karakter null karakteri (l '\0') karşılaştığı count dönüştürür, 8-bit 0 ve durduğunda gerçekleşir.Bu nedenle, en çok baytlı karakter dizesi mbstr yalnızca biten wcstombs dönüştürme sırasında bir geniş karakter null karakteri karşılaşır.Sıraları göre sıralanmasını, wcstr ve mbstr üst üste, davranışını wcstombs tanımlı değil.
mbstr Bağımsız değişkeni NULL, wcstombs gereken boyut hedef dize bayt cinsinden döndürür.
wcstombsparametrelerinin geçerliliğini denetler.wcstr Olan NULL, veya count büyüktür:INT_MAX, açıklandığı gibi bu işlevi geçersiz parametre işleyicisini çağırır Parametre doğrulama .Yürütülmesine devam etmek için izin verilirse, işlevi ayarlar errno için EINVAL ve -1 değerini döndürür.
wcstombsGeçerli yerel ayarı herhangi bir yerel ayara bağımlı davranışını kullanır; _wcstombs_lBunun yerine geçirilen yerel kullanır dışında aynıdır.Daha fazla bilgi için bkz. Yerel ayar.
C++'da, bu işlevlerin daha yeni ve güvenli karşılıkları çağırmak şablon aşırı bu işlevleri vardır.Daha fazla bilgi için bkz. Güvenli şablon aşırı yükleme.
Gereksinimler
Yordamı |
Gerekli başlık |
---|---|
wcstombs |
<stdlib.h> |
_wcstombs_l |
<stdlib.h> |
Ek uyumluluk bilgileri için bkz: Uyumluluk giriş.
Örnek
Bu programın davranışını gösterilmektedir wcstombs işlevi.
// crt_wcstombs.c
// compile with: /W3
// This example demonstrates the use
// of wcstombs, which converts a string
// of wide characters to a string of
// multibyte characters.
#include <stdlib.h>
#include <stdio.h>
#define BUFFER_SIZE 100
int main( void )
{
size_t count;
char *pMBBuffer = (char *)malloc( BUFFER_SIZE );
wchar_t *pWCBuffer = L"Hello, world.";
printf("Convert wide-character string:\n" );
count = wcstombs(pMBBuffer, pWCBuffer, BUFFER_SIZE ); // C4996
// Note: wcstombs is deprecated; consider using wcstombs_s instead
printf(" Characters converted: %u\n",
count );
printf(" Multibyte character: %s\n\n",
pMBBuffer );
free(pMBBuffer);
}
.NET Framework Eşdeğeri
Yoktur. Standart c işlevi çağırmak için kullanmak PInvoke. Daha fazla bilgi için bkz: Platform Çağırma örnekleri.