Valor armazenado quando a leitura do istream falha
Código de amostra:
#include <iostream>
int main()
{
int x = 5;
std::cin >> x;
std::cout << x << '\n';
}
Emuma implementação particular o seguinte comportamento ocorre:
Entrada:6
; resultado6
Entrada:a
; resultado:0
Entrada: (fim do arquivo); resultado5
Entrada: (espaço em branco seguido pelo final do arquivo); resultado5
Então, em caso de falha, ocin >> x
está atribuindo0
parax
se houve falha na conversão do texto em int; mas não está atribuindo0
se a falha ocorreu devido ao final do arquivo.
Esse comportamento é correto? Caso contrário, qual é o comportamento correto, de acordo com o padrão C ++?
Tenho uma lembrança de discutir anteriormente sobre o SO que todos os casos devem escrever0
desde C ++ 11, mas não encontrei nada usando o recurso de pesquisa; e a seção iostreams do padrão C ++ é bastante pesada.