Pregunta

istream :: get y una duda todavía cuelga. Digamos que mi delimitador es en realidad el NULL '\ 0', lo que sucede en este caso? Por lo que leo:

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.

La razón yo preferiría "obtener" sobre "readline" se debe a la capacidad de extraer el flujo de caracteres en una "streambuf".

¿Fue útil?

Solución

Si usted tiene algo como esto, entonces delimitador no se queda bloqueado en la corriente 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);
}

sólo un ejemplo, si tiene '\ 0' como delimitador y las cuerdas no son más grandes que 1024 bytes.

Otros consejos

Yo no' bastante conseguir su problema.

En el sitio web de MSDN, para la función get, que dice:

  

En todos los casos, el delimitador es ni extraer de la corriente ni devuelto por la función. La función getline, por el contrario, extrae pero no almacena el delimitador.   En todos los casos, el delimitador es ni extrae de la corriente ni devuelto por la función. La función getline, por el contrario, extractos, pero no almacena el delimitador.

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

No creo que el va a tener un problema, ya que el sitio de MSDN dice que el delimitador no es ni extrae de la corriente, ni volvió vy la función.

O tal vez me falta un punto aquí?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top