Tengo un problema con el getline() en visual studio c++

Tengo un problema y es el siguiente:

Resulta que deseo que el usuario digite el nombre completo de una universidad, la dirección y el numero de teléfono pero a la hora de usar getline me aparece algo como:
Digite el nombre
Digite la dirección

 __________________

Ahí arriba me manda para escribir la dirección y me manda el nombre como si lo tomara como un espacio y no me deja ni escribirlo :(
Este seria como el codigo
string nom;
string dir;
string tel;
<<" **Menu 1** "<<endl
<<" "<<endl
<<" ~Digite el nombre de la universidad~ "<<endl
<<" ";getline(cin, nom);
Cout<<" ~Digite la ubicacion exacta de la univesidad~ "<<endl
<<" ";getline(cin, dir);
cout<<" ~Digite el numero de telefono de la universidad~ "<<endl
<<" ";getline(cin>>tel);

1 respuesta

Respuesta
1

Yo instale VS6.0. para recrear tu problema.
De antemano te digo que el código:
Cout<<" ~Digite el numero de telefono de la universidad~ "<<endl
<<" ";getline(cin>>tel);
                  ^ Aquí hay un error...
El siguiente código demuestra que efectivamente hay un problema con la primera entrada desde el dispositivo estándar de entrada (stdin), ya que te obliga a hacer dos lecturas de string en lugar de una sola.
Habría que testear este código en una version más reciente, pero tengo instalada visual studio 10, y me da error de formato COFF (linkeando el .exe)
Lo que no me permite generar .exe en modo de línea de comandos.
-Te obliga a realizar 4 entradas, cuando realmente tienes 3 getline
-Anexe el despliegue de los resultados al final y demuestra que la ultima entrada (4ta) se pierden los valores del teléfono.
Espero haberte ayudado.
Suerte...
ACA el codigo
// Test1.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#pragma warning(disable:4786)
#include <string>
#include <iostream>
using namespace std ;
#include "test1.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// The one and only application object
CWinApp theApp;
using namespace std;
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
    int nRetCode = 0;
    // initialize MFC and print and error on failure
    if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
    {
        // TODO: change error code to suit your needs
        cerr << _T("Fatal Error: MFC initialization failed") << endl;
        nRetCode = 1;
    }
    else
    {
        // TODO: code your application's behavior here.
//        CString strHello;
//        strHello.LoadString(IDS_HELLO);
//        cout << (LPCTSTR)strHello << endl;
        string cnom = "\n";
        string cdir = "\n";
        string ctel = "\n";
//   string s1;
//   cout << "Enter a sentence (use <space> as the delimiter): ";
//   getline(cin,s1, ' ');
//   cout << "You entered: " << s1 << endl;;
        cin.clear();
        cout.clear();
        cin.eof();
        cout.eof();
        cout <<" **Menu 1** "<< endl ;        
        cout << endl ;
        cout << " ~Digite el nombre de la universidad~ " << endl  ;
        getline(cin, cnom, '\n');
        cout <<" ~Digite la ubicacion exacta de la univesidad~ " << endl << " ";
        getline(cin, cdir, '\n' );
        cout <<" ~Digite el numero de telefono de la universidad~ " <<endl << " ";
        getline(cin, ctel, '\n' );
        cout << cnom << endl ;
        cout << cdir << endl ;
        cout << ctel << endl ;    
    }
    return nRetCode;
}

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas