Udostępnij za pośrednictwem


mbsrtowcs_s

Konwertowanie ciągu szerokich znaków na jej reprezentację ciągu znaków wielobajtowych.Wersja z mbsrtowcs z rozszerzeń zabezpieczeń opisane w Funkcje zabezpieczeń w CRT.

errno_t mbsrtowcs_s(
   size_t *pReturnValue,
   wchar_t *wcstr,
   size_t sizeInWords,
   const char **mbstr,
   size_t count,
   mbstate_t *mbstate
);
template <size_t size>
errno_t mbsrtowcs_s(
   size_t *pReturnValue,
   wchar_t (&wcstr)[size],
   const char **mbstr,
   size_t count,
   mbstate_t *mbstate
); // C++ only

Parametry

  • [out]pReturnValue
    Liczba znaków konwertowane.

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

  • [out]sizeInWords
    Rozmiar wcstr słowa (szerokości znaków).

  • [w]mbstr
    Wskazuje lokalizację ciąg znaków wielobajtowych do konwersji.

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

  • [w]mbstate
    Wskaźnik do mbstate_t obiekt stanu konwersji.

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 pomieścił przekonwertowanym łańcuchem (chyba że count jest _TRUNCATE; Zobacz uwagi poniżej)

ERANGE

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

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

  • Po napotkaniu wielobajtowych znaków null

  • Nieprawidłowy znak wielobajtowych po napotkaniu

  • 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 mbsrtowcs_s konwertuje tyle ciąg będą mieści się w bufor docelowy, pozostawiając nadal miejsca na null terminator.

Jeśli mbsrtowcs_s pomyślnie konwertuje ciąg źródłowy umieszcza rozmiar w szerokości znaków przekonwertowanym łańcuchem, łącznie z null terminator do *pReturnValue (pod warunkiem pReturnValue nie jest NULL).Dzieje się tak nawet wtedy, gdy wcstr argument jest NULL i daje możliwość określenia wymagany rozmiar buforu.Note that if wcstr is NULL, count is ignored.

Jeśli mbstate jest NULL, wewnętrznego mbstate_t stan konwersji jest używany.

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

Jeśli sekwencji wskazywanej przez mbstr i wcstr nachodzą na siebie, zachowanie mbsrtowcs_s jest niezdefiniowane.mbsrtowcs_sdotyczy kategorii LC_TYPE bieżące ustawienia regionalne.

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

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

mbsrtowcs_s Funkcja różni się od mbstowcs_s, _mbstowcs_s_l przez jego restartability.Stan konwersji jest przechowywany w mbstate dla kolejnych zaproszeń na to samo lub inne funkcje Przerywalne.Wyniki są niezdefiniowane, przy użyciu funkcji Przerywalne i nonrestartable.Na przykład, aplikacja będzie korzystać z mbsrlen zamiast mbslen, jeśli kolejne wywołania mbsrtowcs_s zostały użyte zamiastmbstowcs_s.

W języku C++ za pomocą tej 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 Secure, szablon Overloads.

Wyjątki

mbsrtowcs Funkcja jest wielowątkowym bezpieczne tak długo, jak długo wywoła żadnej funkcji w bieżącym wątku setlocale podczas wykonywania tej funkcji oraz mbstate ma wartość null.

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.

Wymagania

Rozpoczęto wykonywanie procedury

Wymaganego nagłówka

mbsrtowcs

<wchar.h>

Zobacz też

Informacje

Konwersja danych

Ustawienia regionalne

Interpretacja sekwencje znaków wielobajtowych

mbrtowc

mbtowc, _mbtowc_l

mbstowcs_s, _mbstowcs_s_l

mbsinit