A função de modelo getline lê um caractere extra depois encontrando o delimitador

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 240015
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Sintomas
A biblioteca C++ padrão modelo getline função lê um caractere extra depois encontrando o delimitador. Consulte o programa de exemplo na seção mais informações para obter detalhes.
Resolução
Modificar a função de membro getline , que pode ser encontrada na seguinte seqüência de arquivo de cabeçalho do sistema, da seguinte maneira:
	else if (_Tr::eq((_E)_C, _D))                {_Chg = true;              //  _I.rdbuf()->snextc(); /* Remove this line and add the line below.*/ 		  _I.rdbuf()->sbumpc();                break; }				
Observação como a resolução envolve a modificação um arquivo de cabeçalho do sistema, extremo cuidado para garantir que nada mais é alterado no arquivo de cabeçalho. Microsoft não é responsável por quaisquer problemas resultantes de alterações indesejadas os arquivos de cabeçalho do sistema.
Situação
A Microsoft confirmou que esse é um problema nos produtos da Microsoft listados na seção "Aplica-se a".Esse problema foi corrigido no Microsoft Visual C++. NET.
Mais Informações
O programa de exemplo a seguir demonstra o bug:
//test.cpp//Compiler options : /GX#include <string>#include <iostream>int main () {	std::string s,s2;	std::getline(std::cin,s);	std::getline(std::cin,s2);	std::cout << s <<'\t'<< s2 << std::endl;	return 0;}Actual Results:Hello<Enter Key>World<Enter Key><Enter Key>	Hello   WorldExpected Results:Hello<Enter Key>World<Enter Key>Hello   World				
STL

Propriedades

ID do Artigo: 240015 - Última Revisão: 12/05/2015 15:36:11 - Revisão: 3.0

The Standard C++ Library

  • kbnosurvey kbarchive kbmt kbtshoot kbprb kbbug kbfix kblangcpp kbnoupdate kbstl kbtemplate KB240015 KbMtpt
Comentários