wcstombs _wcstombs_l
Posloupnost znaků široké převede na odpovídající posloupnost vícebajtových znaků.Bezpečnější verze tyto funkce jsou k dispozici; 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
Parametry
mbstr
Adresa posloupnost vícebajtových znaků.wcstr
Adresa posloupnost znaků široký.count
Maximální počet bajtů, které mohou být uloženy ve výstupu vícebajtové řetězce.locale
Národní prostředí použít.
Vrácená hodnota
Pokud wcstombs úspěšně převede řetězec vícebajtových vrátí počet bajtů zapsaných do vícebajtové výstupní řetězec, s výjimkou ukončení NULL (pokud existuje).Pokud mbstr argument je NULL, wcstombs vrátí požadovaná velikost v bajtech cíl řetězec.Pokud wcstombs nalezne širokými znaky nelze převést na vícebajtové znakové vrátí hodnotu –1 odevzdaných zadejte size_t a nastaví errno na EILSEQ.
Poznámky
wcstombs Funkce převede řetězec znaků wide odkazuje wcstr na odpovídající vícebajtové znaky a ukládá výsledky mbstr pole.count Parametr označuje maximální počet bajtů, které mohou být uloženy ve výstupu vícebajtové řetězce (, velikost mbstr).Obecně není známo, kolik bajtů budou požadovány při převodu celého znakový řetězec.Některé znaky široké bude vyžadovat pouze jednoho bajtu na výstupní řetězec; jiné vyžadují dvě.Pokud jsou dva bajty v řetězec vícebajtových výstup pro každý znak široké vstupní řetězce (včetně znaku široké NULL), výsledek je zaručen přizpůsobit.
Pokud wcstombs narazí znakem null celého znaku (L "\0") před nebo po count dojde, převede ho 8 bit 0 a zastaví.Tedy řetězec vícebajtových znaků na mbstr je zakončený pouze tehdy, pokud wcstombs během převodu zjistí znakem null celého znaku.Pokud na sekvence odkazuje wcstr a mbstr překrývají, chování wcstombs nedefinovaná.
Pokud mbstr argument je NULL, wcstombs vrátí požadovaná velikost v bajtech cíl řetězec.
wcstombsověřuje jeho parametry.Pokud wcstr je NULL, nebo pokud count je větší nežINT_MAX, vyvolá popisovač neplatný parametr této funkce popsané v Ověření parametrů .Pokud je povoleno spuštění pokračovat, nastaví funkci errno na EINVAL a vrátí -1.
wcstombspoužívá aktuální národní prostředí pro všechny národní prostředí závislé na chování; _wcstombs_lje identické používá místo předaný národní prostředí.Další informace naleznete v tématu Národní prostředí.
V jazyce C++ mají tyto funkce šablony přetížení, které vyvolávají novější, zabezpečené protějšků těchto funkcí.Další informace naleznete v tématu Přetížení šablony zabezpečení.
Požadavky
Rutina |
Požadované záhlaví |
---|---|
wcstombs |
<stdlib.h> |
_wcstombs_l |
<stdlib.h> |
Další informace o kompatibilitě, viz Compatibility v úvodu.
Příklad
Tento program popisuje chování wcstombs funkce.
// 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);
}
Ekvivalent v rozhraní .NET Framework
Nelze použít Použijte volání funkce standardní C, PInvoke. Další informace naleznete v tématu Příklady vyvolat platformu.