La función de plantilla getline lee un carácter adicional después de encontrar el delimitador

Seleccione idioma Seleccione idioma
Id. de artículo: 240015 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

Síntomas

La función de getline de plantilla de biblioteca estándar de C++ lee un carácter adicional después de encontrar el delimitador. Consulte el programa de ejemplo en la sección información adicional para obtener más detalles.

Solución

Modificar la función de miembro getline , que puede encontrarse en la siguiente cadena de archivo de encabezado del sistema, como sigue:
	else if (_Tr::eq((_E)_C, _D))
                {_Chg = true;
              //  _I.rdbuf()->snextc(); /* Remove this line and add the line below.*/ 
		  _I.rdbuf()->sbumpc();
                break; }

				
Nota como la resolución implica modificar un archivo de encabezado del sistema, extremo cuidado para asegurarse de que nada más está cambiado en el archivo de encabezado. Microsoft no es responsable de los problemas resultantes de los cambios no deseados a los archivos de encabezado del sistema.

Estado

Microsoft ha confirmado que se trata de un error de los productos de Microsoft enumerados en la sección "La información de este artículo se refiere a:".Este problema se corrigió en Microsoft Visual C++. NET.

Más información

El programa de ejemplo siguiente muestra el error:
//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   World

Expected Results:
Hello<Enter Key>
World<Enter Key>
Hello   World
				

Propiedades

Id. de artículo: 240015 - Última revisión: viernes, 02 de septiembre de 2005 - Versión: 3.0
La información de este artículo se refiere a:
  • The Standard C++ Library sobre las siguientes plataformas
    • Microsoft Visual C++ 6.0 Enterprise
    • Microsoft Visual C++ 6.0 Professional
    • Microsoft Visual C++, 32-bit Learning Edition 6.0
Palabras clave: 
kbmt kbtshoot kbprb kbbug kbfix kblangcpp kbnoupdate kbstl kbtemplate KB240015 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 240015

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com