Пространства имён
Варианты
Действия

std::codecvt::length, std::codecvt::do_length

Материал из cppreference.com
< cpp‎ | locale‎ | codecvt

 
 
Локализация
Локализации и фасеты
locale
Классификация символов
Преобразования
Базовые классы фасетов
Категории фасетов
Зависящие от локализации категории фасетов
Не зависящие от локализации фасеты преобразования unicode
codecvt_utf8(C++11)
codecvt_utf16(C++11)
Локализации С
 
std::codecvt
Член функций
Оригинал:
Member functions
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
codecvt::codecvt
codecvt::~codecvt
codecvt::out
codecvt::do_out
codecvt::in
codecvt::do_in
codecvt::unshift
codecvt::do_unshift
codecvt::encoding
codecvt::do_encoding
codecvt::always_noconv
codecvt::do_always_noconv
codecvt::length
codecvt::do_length
codecvt::max_length
codecvt::do_max_length
 
Определено в заголовочном файле <locale>
public:

int length( stateT& state,
            const externT* from,
            const externT* from_end,

            std::size_t max ) const
(1)
protected:

int do_length( stateT& state,
               const externT* from,
               const externT* from_end,

               std::size_t max ) const
(2)
1)
общественные функции-члена, вызывает do_length функции-члена из самых производного класса.
Оригинал:
public member function, calls the member function do_length of the most derived class.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
2)
Попытки преобразовать externT символов из массива символов определяется [from, from_end), заданных начальных state состоянии преобразования, не более max internT символов и возвращает количество символов externT, что такие преобразования будут потреблять. Изменяет state, как будто выполняя do_in(state, from, from_end, from, to, to+max, to) для некоторых мнимых выходной буфер [to, to+max).
Оригинал:
attempts to convert the externT characters from the character array defined by [from, from_end), given initial conversion state state, to at most max internT characters, and returns the number of externT characters that such conversion would consume. Modifies state as if by executing do_in(state, from, from_end, from, to, to+max, to) for some imaginary [to, to+max) output buffer.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

[править] Возвращаемое значение

Число externT символы, которые будут потребляться, если преобразуется do_in(), пока не все символы from_end-from были потреблены или max internT персонажи производителя, или возникла ошибка преобразования.
Оригинал:
The number of externT characters that would be consumed if converted by do_in() until either all from_end-from characters were consumed or max internT characters were producer, or a conversion error occurred.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
без преобразования специализации std::codecvt<char, char, std::mbstate_t> возвращается std::min(max, from_end-from)
Оригинал:
The non-converting specialization std::codecvt<char, char, std::mbstate_t> returns std::min(max, from_end-from)
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

[править] Пример

#include <locale>
#include <string>
#include <iostream>
int main()
{
    //  narrow multibyte encoding
    std::string s = "z\u00df\u6c34\U0001d10b"; // or u8"zß水𝄋"
                      // or "\x7a\xc3\x9f\xe6\xb0\xb4\xf0\x9d\x84\x8b";
    std::mbstate_t mb = std::mbstate_t();
    std::cout << "Only the first " <<
              std::use_facet<std::codecvt<wchar_t, char, std::mbstate_t>>(
                    std::locale("en_US.utf8")
              ).length(mb, &s[0], &s[s.size()], 2)
              << " bytes out of " << s.size() << " would be consumed "
                 " to produce the first 2 characters\n";
}

Вывод:

Only the first 3 bytes out of 10 would be consumed to produce the first 2 characters

[править] См. также

[virtual]
преобразует строку из externT в internT, например, при чтении из файла
Оригинал:
converts a string from externT to internT, such as when reading from file
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(virtual protected функция-член) [edit]