std::basic_streambuf<CharT,Traits>::setg
De cppreference.com
void setg( char_type* gbeg, char_type* gcurr, char_type* gend );
|
||
Establece los valores de los indicadores que definen el área get. Específicamente, después de la llamada
eback() == gbeg, gptr() == gcurr, egptr() == gendOriginal:
Sets the values of the pointers defining the get area. Specifically, after the call
eback() == gbeg, gptr() == gcurr, egptr() == gendThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Parámetros
| gbeg | - | puntero al comienzo de la nueva área get
Original: pointer to the new beginning of the get area The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
| gcurr | - | puntero al nuevo personaje actual (' conseguir puntero) en la zona get
Original: pointer to the new current character (get pointer) in the get area The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
| gend | - | puntero al final de la nueva zona get
Original: pointer to the new end of the get area The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
Valor de retorno
(Ninguno)
Original:
(none)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Ejemplo
Ejecuta este código
#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);
}
Salida:
This is an example
