std::basic_streambuf::underflow
Материал из cppreference.com
|
|
Эта страница была переведена автоматически с английской версии вики используя Переводчик Google. Перевод может содержать ошибки и странные формулировки. Наведите курсор на текст, чтобы увидеть оригинал. Щёлкните здесь, чтобы увидеть английскую версию этой страницы. (Вы можете помочь в исправлении ошибок и улучшении перевода. Для инструкций перейдите по ссылке.) |
<metanoindex/>
<tbody> </tbody> int_type underflow(); |
||
Гарантирует, что по крайней мере один символ доступен в области ввода путем обновления указателей на область ввода (при необходимости). Возвращает значение этого символа на успех или неудача на
traits::eof().Оригинал:
Ensures that at least one character is available in the input area by updating the pointers to the input area (if needed). Returns the value of that character on success or
traits::eof() on failure.Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Функция может обновить
gptr, egptr и eback указателей для определения местоположения вновь загруженные данные (если таковые имеются). В случае ошибки, функция гарантирует, что либо gptr() == nullptr или gptr() == egptr.Оригинал:
The function may update
gptr, egptr and eback pointers to define the location of newly loaded data (if any). On failure, the function ensures that either gptr() == nullptr or gptr() == egptr.Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Версия базового класса функция ничего не делает. Производные классы могут переопределить эту функцию, чтобы разрешить обновление Get области в случае истощения.
Оригинал:
The base class version of the function does nothing. The derived classes may override this function to allow updates to the get area in the case of exhaustion.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Параметры
(Нет)
Возвращаемое значение
Значение символа, на который указывает' получить указатель после вызова на успех, или
traits::eof() иначе.Оригинал:
The value of the character pointed to by the get pointer after the call on success, or
traits::eof() otherwise.Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Версия базового класса вызова функции
traits::eof().Оригинал:
The base class version of the function calls
traits::eof().Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Примечание
Общественные функции std::streambuf вызывать эту функцию только тогда, когда
gptr() == nullptr или gptr() >= egptr().Оригинал:
The public functions of std::streambuf call this function only if
gptr() == nullptr or gptr() >= egptr().Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Пример
Запустить этот код
#include <iostream>
#include <sstream>
class null_filter_buf : public std::streambuf {
std::streambuf* src;
char ch; // single-byte buffer
protected:
int underflow() {
while( (ch= src->sbumpc()) == '\0') ; // skip zeroes
setg(&ch, &ch, &ch+1); // make one read position available
return ch; // may return EOF
}
public:
null_filter_buf(std::streambuf* buf) : src(buf) {
setg(&ch, &ch+1, &ch+1); // buffer is initially full
}
};
void filtered_read(std::istream& in)
{
std::streambuf* orig = in.rdbuf();
null_filter_buf buf(orig);
in.rdbuf(&buf);
for(char c; in.get(c); )
std::cout << c;
in.rdbuf(orig);
}
int main()
{
char a[] = "This i\0s \0an e\0\0\0xample";
std::istringstream in(std::string(std::begin(a), std::end(a)));
filtered_read(in);
}
Вывод:
This is an example
См. также
[virtual] |
читает символы из соответствующей последовательности ввода Get области и авансов следующего указателя Оригинал: reads characters from the associated input sequence to the get area and advances the next pointer Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (virtual protected функция-элемент) |
[virtual] |
пишет символы с соответствующей последовательности выхода из поставленных области Оригинал: writes characters to the associated output sequence from the put area Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (virtual protected функция-элемент) |