Pergunta

Eu li istream :: get e ainda dúvida trava. Vamos dizer que o meu delimitador é realmente o NULL '\ 0', o que acontece neste caso? Pelo que li:

If the delimiting character is found, it is not extracted from the input sequence and remains as the next character to be extracted. Use getline if you want this character to be extracted (and discarded). The ending null character that signals the end of a c-string is automatically appended at the end of the content stored in s.

A razão de eu preferiria "ficar" over "readline" é por causa da capacidade de extrair o fluxo de caracteres em um "streambuf".

Foi útil?

Solução

Se você tem algo assim, então delimitador não vai ficar preso no fluxo de entrada:

std::string read_str(std::istream & in)
{
        const int size  = 1024;
        char pBuffer[size];
        in.getline(pBuffer, size, '\0');
        return std::string(pBuffer);
}

apenas um exemplo, se você tem '\ 0' como delimitador e cordas não são maiores do que 1024 bytes.

Outras dicas

Eu não' bastante obter o seu problema.

No site do MSDN, para a função get, ele diz:

Em todos os casos, o delimitador é nem extraído do fluxo nem retornado pela função. A função getline, em contraste, extratos, mas não armazena o delimitador. Em todos os casos, o delimitador é nem extraído do fluxo nem retornado pela função. A função getline, em contraste, extratos, mas não armazena o delimitador.

http://msdn.microsoft.com/ en-us / library / aa277360 (VS.60) .aspx

Eu não acho que o seu vai ter um problema, desde que o site MSDN diz que o delimitador está nem extraídas da corrente, nem voltou vy a função.

Ou talvez eu estou faltando um ponto aqui?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top