std::codecvt::in, std::codecvt::do_in
Материал из cppreference.com
|
|
Эта страница была переведена автоматически с английской версии вики используя Переводчик Google. Перевод может содержать ошибки и странные формулировки. Наведите курсор на текст, чтобы увидеть оригинал. Щёлкните здесь, чтобы увидеть английскую версию этой страницы. (Вы можете помочь в исправлении ошибок и улучшении перевода. Для инструкций перейдите по ссылке.) |
<metanoindex/>
<tbody> </tbody>| Определено в заголовочном файле <locale>
|
||
public: result in( stateT& state, const externT* from, const externT* from_end, const externT*& from_next, internT* to, internT* to_end, internT*& to_next ) const; |
(1) | |
protected: result do_in( stateT& state, const externT* from, const externT* from_end, const externT*& from_next, internT* to, internT* to_end, internT*& to_next ) const; |
(2) | |
1)
общественные функции-члена, вызывает
do_in функции-члена из самых производного класса.Оригинал:
public member function, calls the member function
do_in 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 external characters from the source range [from, from_end) to internal characters, placing the results in the subsequent locations starting at to. Converts no more than from_end - from external characters and writes no more than to_end - to internal 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.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Влияние на
state намеренно не указано. В стандартных аспектов, оно используется для поддержания сдвиг государство, как при вызове std::mbsrtowcs, и поэтому обновляется с учетом преобразования государства после последней обработки внешнего характера, но определенный пользователем аспект может свободно использовать его для поддержания любого другого государства, например, подсчитать количество специальных символов, встречающихся.Оригинал:
The effect on
state is deliberately unspecified. In standard facets, it is used to maintain shift state like when calling std::mbsrtowcs, and is therefore updated to reflect the conversion state after the last processed external 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::string external = u8"z\u00df\u6c34\U0001d10b"; // or u8"zß水𝄋"
// or "\x7a\xc3\x9f\xe6\xb0\xb4\xf0\x9d\x84\x8b";
// note that the following can be done with wstring_convert
std::mbstate_t mb = std::mbstate_t(); // initial shift state
std::wstring internal(external.size(), '\0');
const char* from_next;
wchar_t* to_next;
f.in(mb, &external[0], &external[external.size()], from_next,
&internal[0], &internal[internal.size()], to_next);
// error checking skipped for brevity
internal.resize(to_next - &internal[0]);
std::wcout << L"The string in wide encoding: " << internal << '\n';
}
Вывод:
The string in wide encoding: zß水𝄋
См. также
[virtual] |
считывает данные из соответствующего файла Оригинал: reads from the associated file Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (virtual protected std::basic_filebuf функция-элемент)
|
преобразует байт строки в строку широких Оригинал: converts a byte string into a wide string Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (public функция-элемент std::wstring_convert)
| |
| преобразует узкую многобайтовую строку символов в широкую строку при заданном состоянии (функция) | |
[virtual] |
преобразует строку из internT в externT, например, при записи в файл Оригинал: converts a string from internT to externT, such as when writing to file Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (virtual protected функция-элемент) |