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

std::codecvt::out, std::codecvt::do_out

Материал из 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:

result out( stateT& state,
            const internT* from,
            const internT* from_end,
            const internT*& from_next,
            externT* to,
            externT* to_end,

            externT*& to_next ) const;
(1)
protected:

result do_out( stateT& state,
               const internT* from,
               const internT* from_end,
               const internT*& from_next,
               externT* to,
               externT* to_end,

               externT*& to_next ) const;
(2)
1)
общественные функции-члена, вызывает do_out функции-члена из самых производного класса.
Оригинал:
public member function, calls the member function do_out of the most derived class.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
2)
Если это codecvt аспект определяет преобразование, переводит внутренние символы из [from, from_end) исходный диапазон внешних символов, поместив результат в последующих местах, начиная с to. Преобразует не более from_end - from внутренних символов и записывает не более to_end - to внешних символов. Листья from_next и to_next указывая один за последним элементом успешно преобразовано.
Оригинал:
If this codecvt facet defines a conversion, translates the internal characters from the source range [from, from_end) to external characters, placing the results in the subsequent locations starting at to. Converts no more than from_end - from internal characters and writes no more than to_end - to external characters. Leaves from_next and to_next pointing one beyond the last element successfully converted.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Если это codecvt аспект не определяет преобразования, никакие символы не преобразуются. to_next устанавливается равным to, state остается неизменной, и std::codecvt_base::noconv возвращается.
Оригинал:
If this codecvt facet does not define a conversion, no characters are converted. to_next is set to be equal to to, state is unchanged, and std::codecvt_base::noconv is returned.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

Содержание

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

Значение типа std::codecvt_base::result, указывая на успехи состояние следующим образом:
Оригинал:
A value of type std::codecvt_base::result, indicating the success status as follows:
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
ok
преобразование завершено
Оригинал:
conversion completed
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
partial
Недостаточно места в буфере вывода или неожиданный конец исходного буфера
Оригинал:
not enough space in the output buffer or unexpected end of source buffer
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
error
встречающихся характера, которые не могут быть преобразованы
Оригинал:
encountered a character that could not be converted
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
noconv
этот аспект не является преобразованием, никакого вывода написано
Оригинал:
this facet is non-converting, no output written
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Без преобразования специализации std::codecvt<char, char, std::mbstate_t> всегда возвращается std::codecvt_base::noconv
Оригинал:
The non-converting specialization std::codecvt<char, char, std::mbstate_t> always returns std::codecvt_base::noconv
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

[править] Заметки

Предполагается, что from <= from_end && to <= to_end и что state либо представляющих исходное состояние сдвига или получены путем преобразования предыдущего символа в последовательности.
Оригинал:
Requires that from <= from_end && to <= to_end and that state either representing the initial shift state or obtained by converting the preceding characters in the sequence.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
В то время как codecvt поддерживает N: M преобразования (например, UTF-16 в UTF-8, где два внутренних символов может быть необходимым решить, что внешние символы выход), std::basic_filebuf можно использовать только codecvt аспекты, которые определяют 1: N конверсия, то есть должны быть в состоянии обрабатывать один внутренний характер в то время, когда записи в файл.
Оригинал:
While codecvt supports N:M conversions (e.g. UTF-16 to UTF-8, where two internal characters may be necessary to decide what external characters to output), std::basic_filebuf can only use codecvt facets that define a 1:N conversion, that is it must be able to process one internal character at a time when writing to a file.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
При выполнении N: M преобразований, эта функция может возвращать std::codecvt_base::partial после употребления всех исходных символов (). Это означает, что другого внутреннего характера необходимы для завершения преобразования (например, при преобразовании UTF-16 в UTF-8, если последний символ в исходном буфере высокой суррогатной).
Оригинал:
When performing N:M conversions, this function may return std::codecvt_base::partial after consuming all source characters (). This means that another internal character is needed to complete the conversion (e.g. when converting UTF-16 to UTF-8, if the last character in the source buffer is a high surrogate).
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Влияние на state намеренно не указано. В стандартных аспектов, оно используется для поддержания сдвиг государство, как при вызове std::wcsrtombs, и поэтому обновляется с учетом сдвига состояние после последнего успешно преобразован характер, но определенный пользователем аспект может свободно использовать его для поддержания любого другого государства, например, подсчитать количество специальных символов, встречающихся.
Оригинал:
The effect on state is deliberately unspecified. In standard facets, it is used to maintain shift state like when calling std::wcsrtombs, and is therefore updated to reflect the shift state after the last successfully converted character, but a user-defined facet is free to use it to maintain any other state, e.g. count the number of special characters encountered.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

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

#include <iostream>
#include <string>
#include <locale>
int main()
{
    std::locale::global(std::locale("en_US.utf8"));
    auto& f = std::use_facet<std::codecvt<wchar_t, char, std::mbstate_t>>(std::locale());
    std::wstring internal = L"z\u00df\u6c34\U0001d10b"; // L"zß水𝄋"
 
    // note that the following can be done with wstring_convert
    std::mbstate_t mb = std::mbstate_t(); // initial shift state
    std::string external(internal.size() * f.max_length(), '\0');
    const wchar_t* from_next;
    char* to_next;
    f.out(mb, &internal[0], &internal[internal.size()], from_next,
              &external[0], &external[external.size()], to_next);
    // error checking skipped for brevity
    external.resize(to_next - &external[0]);
 
    std::cout << "The string in narrow multibyte encoding: " << external << '\n';
}

Вывод:

The string in narrow multibyte encoding: zß水𝄋

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

[virtual]
пишет символов связанных файлов из поставленных области
Оригинал:
writes characters to the associated file from the put area
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(virtual protected std::basic_filebuf функция-член) [edit]
преобразует широкий строки в строку байтов
Оригинал:
converts a wide string into a byte string
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(public функция-член std::wstring_convert) [edit]
Преобразует строку широких к узким многобайтовой строки символов, данное состояние
Оригинал:
converts a wide string to narrow multibyte character string, given state
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

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

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