2010-05-17 8 views

Respuesta

200

Por lo general, para 'restablecer' una cadena de caracteres, necesita restablecer la secuencia subyacente a una cadena vacía con str y borrar cualquier error y eof indicadores con clear.

parser.str(std::string()); 
parser.clear(); 

Normalmente lo que sucede es que la primera >> llega al final de la cadena y establece el bit EF, aunque se analiza con éxito el primer corto. Las operaciones en la transmisión después de esto fallan inmediatamente porque el bit de eof de la ruta aún está configurado.

+0

sí, establece eof after operator >>() se ha utilizado y, a veces eof puede establecer fallar también. Gracias –

+21

Personalmente creo que 'parser.str (" ")' es más claro, pero eso es una cuestión de opinión. –

+4

Puede valer la pena editar esta respuesta para poner parser.clear() primero, ya que otros métodos para agregar contenido a la transmisión (por ejemplo, analizador << 5) no funcionan a menos que se llame primero a borrar. –