Ver Mensaje Individual
  #6 (permalink)  
Antiguo 05/04/2010, 18:13
Avatar de jose_desa
jose_desa
 
Fecha de Ingreso: marzo-2010
Mensajes: 19
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Ayuda con getline y strings

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
  1. // string standard header
  2. #if     _MSC_VER > 1000
  3. #pragma once
  4. #endif
  5.  
  6. #ifndef _STRING_
  7. #define _STRING_
  8. #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 original
  1. if (_Ok)
  2.         {_TRY_IO_BEGIN
  3.         _Tr::int_type _C = _I.rdbuf()->sgetc();
  4.         for (; ; _C = _I.rdbuf()->snextc())
  5.             if (_Tr::eq_int_type(_Tr::eof(), _C))
  6.                 {_St |= ios_base::eofbit;
  7.                 break; }
  8.             else if (_Tr::eq((_E)_C, _D))
  9.                 {_Chg = true;
  10.                   _I.rdbuf()->snextc();
  11.                 break; }
  12.             else if (_X.max_size() <= _X.size())
  13.                 {_St |= ios_base::failbit;
  14.                 break; }
  15.             else
  16.                 _X += _Tr::to_char_type(_C), _Chg = true;
  17.         _CATCH_IO_(_I); }
  18.     if (!_Chg)
  19.         _St |= ios_base::failbit;
  20.     _I.setstate(_St);
  21.     return (_I); }
  22. 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 original
  1. if (_Ok)
  2.         {_TRY_IO_BEGIN
  3.         _Tr::int_type _C = _I.rdbuf()->sgetc();
  4.         for (; ; _C = _I.rdbuf()->snextc())
  5.             if (_Tr::eq_int_type(_Tr::eof(), _C))
  6.                 {_St |= ios_base::eofbit;
  7.                 break; }
  8.             else if (_Tr::eq((_E)_C, _D))
  9.                 {_Chg = true;
  10.                   //_I.rdbuf()->snextc(); /*Esta linea se quita o se pone en comentarios*/
  11.                     _I.rdbuf()->sbumpc(); //esta es la que la reemplaza
  12.                 break; }
  13.             else if (_X.max_size() <= _X.size())
  14.                 {_St |= ios_base::failbit;
  15.                 break; }
  16.             else
  17.                 _X += _Tr::to_char_type(_C), _Chg = true;
  18.         _CATCH_IO_(_I); }
  19.     if (!_Chg)
  20.         _St |= ios_base::failbit;
  21.     _I.setstate(_St);
  22.     return (_I); }
  23. 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

Última edición por jose_desa; 06/04/2010 a las 00:23 Razón: complementar