wcstombs_s, _wcstombs_s_l
Geniş bir karakter dizisi çok baytlı karakterlere karşılık gelen bir dizi dönüştürür.Bir sürümü wcstombs, _wcstombs_l açıklandığı gibi güvenlik geliştirmeleri ile CRT'deki Güvenlik Özellikleri.
errno_t wcstombs_s(
size_t *pReturnValue,
char *mbstr,
size_t sizeInBytes,
const wchar_t *wcstr,
size_t count
);
errno_t _wcstombs_s_l(
size_t *pReturnValue,
char *mbstr,
size_t sizeInBytes,
const wchar_t *wcstr,
size_t count,
_locale_t locale
);
template <size_t size>
errno_t wcstombs_s(
size_t *pReturnValue,
char (&mbstr)[size],
const wchar_t *wcstr,
size_t count
); // C++ only
template <size_t size>
errno_t _wcstombs_s_l(
size_t *pReturnValue,
char (&mbstr)[size],
const wchar_t *wcstr,
size_t count,
_locale_t locale
); // C++ only
Parametreler
[Çıkış]pReturnValue
Dönüştürülen karakter sayısı.[Çıkış]mbstr
Sonuç dönüştürülen çok baytlı karakter dizesi için arabellek adresi.[in]sizeInBytes
Bayt olarak boyutu mbstr arabellek.[in]wcstr
Geniş karakter dizesine dönüştürmek için puan.[in]count
En fazla depolanması için geniş karakter sayısı mbstr arabellek Sonlandırıcı boş karakter dahil edilmez, ya da _TRUNCATE.[in]locale
Kullanılacak yerel ayarı.
Dönüş Değeri
Sıfır başarılı olursa, hata durumunda bir hata kodu.
Hata durumu |
Dönüş değeri veerrno |
---|---|
mbstris NULL and sizeInBytes > 0 |
EINVAL |
wcstrİşNULL |
EINVAL |
Hedef önbellek dönüştürülen karakter dizesi çok az. (sürece count olan _TRUNCATE; Aşağıdaki açıklamalar'a bakın) |
ERANGE |
Bu durumlardan herhangi biri meydana gelirse, geçersiz parametre özel durum açıklandığı şekilde çağrılır Parametre Doğrulama .Yürütülmesine devam etmek için izin verilirse, işlevi bir hata kodu verir ve ayarlar errno tabloda belirtildiği gibi.
Notlar
wcstombs_s İşlevi tarafından gösterilen geniş karakterden oluşan bir dize dönüştürür wcstr göre sıralanmasını Arabellekte saklanan çok baytlı karakterleri içine mbstr.Bu koşullardan biri gerçekleşene kadar dönüştürme her karakter için devam eder:
Bir null karakteri karşılaştı
Dönüştürülemeyen bir geniş karakter karşılaştı
Depolanan bayt sayısını mbstr eşittir arabellek count.
Hedef her zaman (hatta bir hata durumunda) boş sonlandırılmış dizedir.
count Özel değeri _TRUNCATE, sonra wcstombs_s bir dize olarak kadarını dönüştürür null Sonlandırıcı oda bırakarak yine hedef arabelleğine sığacak.
wcstombs_s Başarıyla kaynak dize dönüştürür boyutunu bayt cinsinden dönüştürülmüş dizenin null Sonlandırıcı içine dahil koyar *pReturnValue (sağlanan pReturnValue değil NULL).Böyle olsa da, mbstr bağımsız değişkeni NULL ve gerekli arabellek boyutunu belirlemek için bir yol sağlar.Note that if mbstr is NULL, count is ignored.
wcstombs_s Çok baytlı bir karakter dönüştürme yapılamaz geniş bir karakter karşılaşır 0 koyar *pReturnValue, hedef arabellek boş bir dizeye ayarlar, ayarlar errno için EILSEQve EILSEQ.
Sıraları göre sıralanmasını, wcstr ve mbstr üst üste, davranışını wcstombs_s tanımlı değil.
Güvenlik Notu |
---|
Emin wcstr ve mbstr üst üste ve count doğru şekilde dönüştürmek için geniş karakter sayısını yansıtır. |
wcstombs_sGeçerli yerel ayarı herhangi bir yerel ayara bağımlı davranışını kullanır; _wcstombs_s_laynıdır wcstombs dışında bunun yerine geçirilen yerel ayarını kullanır.Daha fazla bilgi için bkz. Yerel Ayar.
C++'da, bu işlevler tarafından şablon aşırı kolaylaştırılmıştır; aşırı arabellek uzunluğu otomatik olarak gerçekleştirip (size baðýmsýz deðiþkeni belirtmek gereğini ortadan kaldırır) ve bunlar otomatik olarak yeni, güvenli karşılıkları ile eski, güvenli olmayan işlevler değiştirebilirsiniz.Daha fazla bilgi için bkz. Güvenli Şablon Aşırı Yüklemeleri.
Gereksinimler
Yordamı |
Gerekli başlık |
---|---|
wcstombs_s |
<stdlib.h> |
Ek uyumluluk bilgileri için bkz: Uyumluluk giriş.
Örnek
Bu programın davranışını gösterilmektedir wcstombs_s işlevi.
// crt_wcstombs_s.c
// This example converts a wide character
// string to a multibyte character string.
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#define BUFFER_SIZE 100
int main( void )
{
size_t i;
char *pMBBuffer = (char *)malloc( BUFFER_SIZE );
wchar_t*pWCBuffer = L"Hello, world.";
printf( "Convert wide-character string:\n" );
// Conversion
wcstombs_s(&i, pMBBuffer, (size_t)BUFFER_SIZE,
pWCBuffer, (size_t)BUFFER_SIZE );
// Output
printf(" Characters converted: %u\n", i);
printf(" Multibyte character: %s\n\n",
pMBBuffer );
// Free multibyte character buffer
if (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.