Como ler de std :: cin até o final do fluxo?
Meu problema é que eu quero ler a entrada destd::cin
mas não sei quanto tempo a entrada é. Também tenho quechar
e não pode usarstd::string
. Existem duas maneiras de lidar: a) O usuário digita o texto e, quando ele pressiona [ENTER], o programa para de ler. b) O usuário redirecionastd::cin
para um arquivo (como.\a.oput < file
) que pode conter várias linha
Editar Acabei de notar que std :: cin.eof () também é sempre falso também no caso de ler um arquiv
Para a) Eu poderia ler até que \ n ocorra. Para b)Edit: Não (Eu poderia ler até que std :: cin.eof () ocorra.) Mas quando não sei se estou tendo um problema a) ou b), como posso interromper o processo de leitur
Isso é o que tenho para a) ...
char buffer = ' ';
while(std::cin >> std::noskipws >> buffer && buffer != '\n')
{
// do some stuff with buffer
}
... e B
char buffer = ' ';
while(std::cin >> std::noskipws >> buffer)
{
// do some stuff with buffer
}
Também sei que existestd::cin.tellg()
para obter a posição atual no fluxo.
Editar Parece que, no caso do arquivo, os fluxos de entrada são finalizados, da maneira questd::cin >> std::noskipws >> buffer
getsfalse
. O que o código acima faz para a):
Então, como faço?