std::basic_streambuf::setg
De cppreference.com
<metanoindex/>
<tbody> </tbody> void setg( char_type* gbeg, char_type* gcurr, char_type* gend ); |
||
Define os valores dos ponteiros definindo a área get. Especificamente, após a chamada
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 | - | ponteiro para o novo começo da á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 | - | ponteiro para o novo personagem atual (' ponteiro chegar) na área 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 | - | ponteiro para o novo fim da área de 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
(Nenhum)
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.
Exemplo
#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);
}
Saída:
This is an example
