Udostępnij za pośrednictwem


mbstowcs_s, _mbstowcs_s_l

Konwertuje sekwencja znaków wielobajtowych odpowiednich sekwencja znaków szerokości.Wersje mbstowcs, _mbstowcs_l z rozszerzeń zabezpieczeń opisane w Funkcje zabezpieczeń w CRT.

errno_t mbstowcs_s(
   size_t *pReturnValue,
   wchar_t *wcstr,
   size_t sizeInWords,
   const char *mbstr,
   size_t count 
);
errno_t _mbstowcs_s_l(
   size_t *pReturnValue,
   wchar_t *wcstr,
   size_t sizeInWords,
   const char *mbstr,
   size_t count,
   _locale_t locale
);
template <size_t size>
errno_t mbstowcs_s(
   size_t *pReturnValue,
   wchar_t (&wcstr)[size],
   const char *mbstr,
   size_t count 
); // C++ only
template <size_t size>
errno_t _mbstowcs_s_l(
   size_t *pReturnValue,
   wchar_t (&wcstr)[size],
   const char *mbstr,
   size_t count,
   _locale_t locale
); // C++ only

Parametry

  • [out]pReturnValue
    Liczby konwertowane znaki.

  • [out]wcstr
    Adres buforu dla wynikowy ciąg przekonwertowany szerokich znaków.

  • [w]sizeInWords
    Rozmiar wcstr buforu w słowach.

  • [w]mbstr
    Adres sekwencji null zakończone znaki wielobajtowe.

  • [w]count
    Maksymalna liczba znaków szerokości do przechowywania w wcstr buforu, nie włączając zakończeń null, lub _TRUNCATE.

  • [w]locale
    Ustawienia regionalne, aby użyć.

Wartość zwracana

Zero, jeśli kończy się pomyślnie, kod błędu w przypadku awarii.

Warunek błędu

Zwraca wartość ierrno

wcstris NULL and sizeInWords > 0

EINVAL

mbstrjestNULL

EINVAL

Bufor docelowy jest zbyt mały, aby zawierać ciąg przekonwertowany (chyba że count jest _TRUNCATE; Zobacz uwagi poniżej)

ERANGE

wcstris not NULL and sizeInWords == 0

EINVAL

Jeśli występuje którykolwiek z tych warunków, wyjątek nieprawidłowy parametr jest wywoływany, jak opisano w Sprawdzanie poprawności parametru .Jeśli wykonanie może w dalszym ciągu, funkcja zwraca kod błędu i ustawia errno jak wskazano w tabeli.

Uwagi

mbstowcs_s Funkcja konwertuje ciąg znaków wielobajtowych wskazywanej przez mbstr do szerokości znaków przechowywanych w buforze wskazywanej przez wcstr.Konwersja będzie kontynuowane dla każdego znaku, dopóki jeden z tych warunków jest spełniony:

  • Po napotkaniu wielobajtowych znakiem null

  • Napotka nieprawidłowych znaków wielobajtowych

  • Liczba szerokości znaków przechowywanych w wcstr buforu równa się count.

Ciąg docelowego jest zawsze zakończony zerem (nawet w przypadku wystąpienia błędu).

Jeśli count jest specjalna wartość _TRUNCATE, następnie mbstowcs_s konwertuje tyle ciągu będą mieści się w bufor docelowy, pozostawiając nadal miejsca na null terminator.

Jeśli mbstowcs_s pomyślnie konwertuje ciąg źródłowy umieszcza w szerokości znaków ciągu przekonwertowane, łącznie null terminator do rozmiaru *pReturnValue (pod warunkiem pReturnValue nie jest NULL).Dzieje się tak nawet wtedy, gdy wcstr argument jest NULL i zapewnia sposób określić wymagany rozmiar buforu.Note that if wcstr is NULL, count is ignored, and sizeInWords must be 0.

Jeśli mbstowcs_s napotka nieprawidłowych znaków wielobajtowych umieszcza 0 w *pReturnValue, ustawia bufor docelowy ciąg pusty, ustawia errno do EILSEQi zwraca EILSEQ.

Jeśli sekwencje wskazywanej przez mbstr i wcstr nachodzą na siebie, zachowanie mbstowcs_s jest niezdefiniowane.

Uwaga dotycząca zabezpieczeńUwaga dotycząca zabezpieczeń

Zapewnić, że wcstr i mbstr nie nakładają się i że count poprawnie odzwierciedla liczbę znaków wielobajtowych do konwersji.

mbstowcs_swykorzystuje bieżące ustawienia regionalne dla dowolnego zachowanie zależne od ustawień regionalnych; _mbstowcs_s_ljest identyczny z tym, że korzysta z ustawień regionalnych, przekazany w zamian.Aby uzyskać więcej informacji, zobacz Regionalne.

W języku C++ korzystając z tych funkcji jest uproszczona poprzez overloads szablonu; overloads można automatycznie rozpoznać długość buforu (eliminując konieczność należy określić argument rozmiar) i automatycznie można zastąpić starszych, które nie są bezpieczne funkcje z ich odpowiednikami nowsze, bezpieczne.Aby uzyskać więcej informacji, zobacz Przeciążenia bezpiecznych szablonów.

Wymagania

Rutynowe

Wymaganego nagłówka

mbstowcs_s

<stdlib.h>

_mbstowcs_s_l

<stdlib.h>

Aby uzyskać dodatkowe informacje o zgodności, zobacz zgodności we wprowadzeniu.

Odpowiednik w programie .NET Framework

Nie dotyczy. Aby wywołać standardowych funkcji C, należy użyć PInvoke. Aby uzyskać więcej informacji, zobacz Przykłady wywołać platformy.

Zobacz też

Informacje

Konwersja danych

Regionalne

MultiByteToWideChar

Interpretacja wielobajtowych sekwencji znaków

_mbclen, mblen, _mblen_l

mbtowc, _mbtowc_l

wcstombs, _wcstombs_l

wctomb, _wctomb_l