Cita: he encontrado el problema en la pagina de soporte de microsoft, dice que efectivamente el getline lee un caracter adicional despues de encontrar el delimitador (en la version 6.0)hora mi problema es que dice que debo modificar la funcion miembro getline......
Ya lo solucione, por fin. Bueno por si alguien le interesa saber como reparar este error:
La ruta del archivo al menos en mi computadora es la siguiente:
C:\Archivos de programa\Microsoft Visual Studio\VC98\Include
Si no la encuentrar deben buscar en que unidad se intalalo su visual studio y en si encontrar la ruta "\VC98\Include"
una vez ahi puede ordenarlo en orden alfabetico y busquen el archivo STRING (no tiene ninguna extension ni .h ni .cpp ni nada, a mi me aparece sin icono) luego pueden hacer 2 cosas:
1. abrir el visual c++ y arrastrar el archivo que menciono(STRING) al documento para que se los abra para poder modificarlo.
2.Dar doble clic al archivo(STRING) y escoger "Abrir con" Bloc de notas
Independientemente de la opcion que escojas una vez abierto el archivo, te va a parecer mucho codigo que lo primero que les dice es:
Código C++:
Ver original// string standard header
#if _MSC_VER > 1000
#pragma once
#endif
#ifndef _STRING_
#define _STRING_
#include <istream>
....
.
.
Luego se van hasta mas o menos la mitad del documento y les va a aprecer el siguiente codigo:
Código C++:
Ver originalif (_Ok)
{_TRY_IO_BEGIN
_Tr::int_type _C = _I.rdbuf()->sgetc();
for (; ; _C = _I.rdbuf()->snextc())
if (_Tr::eq_int_type(_Tr::eof(), _C))
{_St |= ios_base::eofbit;
break; }
else if (_Tr::eq((_E)_C, _D))
{_Chg = true;
_I.rdbuf()->snextc();
break; }
else if (_X.max_size() <= _X.size())
{_St |= ios_base::failbit;
break; }
else
_X += _Tr::to_char_type(_C), _Chg = true;
_CATCH_IO_(_I); }
if (!_Chg)
_St |= ios_base::failbit;
_I.setstate(_St);
return (_I); }
template<class _E, class _Tr, class _A> inline
Aqui lo que deben modificar es la linea 10:
_I.rdbuf()->snextc(); y cambiar la por esta otra _I.rdbuf()->sbumpc();
quedando el codigo asi:
Código C++:
Ver originalif (_Ok)
{_TRY_IO_BEGIN
_Tr::int_type _C = _I.rdbuf()->sgetc();
for (; ; _C = _I.rdbuf()->snextc())
if (_Tr::eq_int_type(_Tr::eof(), _C))
{_St |= ios_base::eofbit;
break; }
else if (_Tr::eq((_E)_C, _D))
{_Chg = true;
//_I.rdbuf()->snextc(); /*Esta linea se quita o se pone en comentarios*/
_I.rdbuf()->sbumpc(); //esta es la que la reemplaza
break; }
else if (_X.max_size() <= _X.size())
{_St |= ios_base::failbit;
break; }
else
_X += _Tr::to_char_type(_C), _Chg = true;
_CATCH_IO_(_I); }
if (!_Chg)
_St |= ios_base::failbit;
_I.setstate(_St);
return (_I); }
template<class _E, class _Tr, class _A> inline
Guardar los cambios ya sea en el block de notas solo le das en Guardar o en el Visual.
Y eso es todo, Muchas gracias a los que me ayudaron y espero que a alguien mas le sirva.
Pagina de microsoft donde marcan el error: http://support.microsoft.com/kb/240015