hacer una cout en la misma linea de cin Solucionado

Iniciado por nolasco281, 28 Enero 2014, 05:13 AM

0 Miembros y 1 Visitante están viendo este tema.

nolasco281

Hola a todos mi pregunta de hoy es si se puede imprimir una cadena despues de un cin

lo explico mejor en la imagen quiero que me salga asi

En la salida en consola:

Ingrese algo: hola como estas bien y tu. <- pero todo en la misma linea. si que me haga un salto de linea

Lo que se puede imaginar... se puede programar.

Shell Root

Guardandolo en una variable? La verdad no entendí  :-[
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

nolasco281

si te fijas el cin hace un salto de linea, y eso es lo que no quiero que me haga.

sino que se muestre todo junto.

gracias por contestar.
Lo que se puede imaginar... se puede programar.

vangodp

#3
Que te parece este? :D
Lo vi en un post algo antiguo.
Es de eternal idol la solución.
Código (cpp) [Seleccionar]

#include <iostream>
using namespace std;

int main (){
 string frase;
 cout << "Escriba algo :)";
 cin.getline((char*)frase.c_str(), 100);
 cout << frase.c_str() << " bien y tu";


cin.ignore();
return 0;
}

amchacon

Lol, olvidate de esa aberración vangodp *_*.

C_str() es un puntero solo para LECTURA. Si intentas escribir en él la vas a liar parda, te puede funcionar de "chiripa" para 3-4 caracteres. Prueba a meterle 10-15 a ver que pasa.

En todo caso sería:
Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;

int main ()
{
    string frase;
    cout << "Escriba algo :)";

    getline(cin,frase);

    cout << frase << " bien y tu";

    cin.ignore();
    return 0;
}


Y aún así tampoco es lo que pide el usuario. Para hacerlo tendrías que usar una librería externa (como ncurses o la de conio.h). Si usas la de conio te interesa la función getch()

Código (cpp) [Seleccionar]
#include <iostream>
#include<conio.h>
using namespace std;

string LeerPalabra()
{
    string palabra;
    int ch;

    while ((ch = getch()) != ' ' && ch != '\n' && ch != EOF)
    {
        cout<<(char)ch;
        palabra += ch;
    }
    cout<<(char)ch;
    return palabra;
}

int main ()
{
    string frase;
    cout << "Escriba algo :)";

    frase = LeerPalabra();

    cout <<" bien y tu";

    cin.ignore();
    return 0;
}


Eso si hará lo que quieres, leera hasta que encuentre un espacio y devolverá la palabra leída.

Puedes hacer incluso que no muestre lo que vas escribiendo (comentando los couts que he puesto en la función).
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

vangodp

Pues entonces lo arreglo algo :D
Código (cpp) [Seleccionar]

#include <iostream>
using namespace std;

int main (){
  int TAM = 500;
  char frase[TAM];
  cout << "Escriba algo :)";
  cin.getline(frase, TAM, '\n'); //mientras no traspase 500 y no pulses enter lee toda la linea
  cout << frase << " bien y tu";


cin.ignore();
return 0;
}

vangodp

#6
Muy bueno Tu código. ¿Pero no puede capturar mas de una sola palabra?
Seria perfecto si por ejemplo leera algo como "Hola que ta?". Sin embargo solo ha leido el Hola :/
Pero esta muy bien, a ver si lo consigo hacer que se trague la linea completa :D
Código (cpp) [Seleccionar]
#include <iostream>
#include<conio.h>
#include<fstream>
using namespace std;

string LeerPalabra() {
   string palabra;
   int ch;

   while ((ch = getch()) != ' ' && ch != '\n' && ch != EOF) {
       cout<<(char)ch;
       palabra += ch;
   }
   cout<<(char)ch;
   return palabra;
}

int main () {
   string frase;
   cout << "Escriba algo :)";

   frase = LeerPalabra();

   cout <<" bien y tu";

   cin.ignore();
   return 0;
}


tuve que incluir fstream, me daba error por el EOF.
No sera por eso?

amchacon

Si lo que quieres es leer la línea entera:
Código (cpp) [Seleccionar]
#include <iostream>
#include<conio.h>
using namespace std;

string LeerPalabra()
{
    string palabra;
    int ch;

    while ((ch = getch()) != 13 && ch != EOF)
    {
        cout<<(char)ch;
        palabra += ch;
    }
    return palabra;
}

int main ()
{
    string frase;
    cout << "Escriba algo ";

    frase = LeerPalabra();

    cout <<" bien y tu";

    cin.ignore();
    return 0;
}


Cita de: vangodp en 28 Enero 2014, 12:48 PM
Pues entonces lo arreglo algo :D
Código (cpp) [Seleccionar]

#include <iostream>
using namespace std;

int main (){
  int TAM = 500;
  char frase[TAM];
  cout << "Escriba algo :)";
  cin.getline(frase, TAM, '\n'); //mientras no traspase 500 y no pulses enter lee toda la linea
  cout << frase << " bien y tu";


cin.ignore();
return 0;
}

2 anotaciones:

- No hace falta que indiques '\n', el argumento por defecto de getline es ese.
- Puedes seguir usando strings, no hace falta que te pasas a char:
Código (cpp) [Seleccionar]
getline(cin,frase);
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

vangodp

#8
getline(cin,frase);  ;D

Código (cpp) [Seleccionar]

#include <iostream>
using namespace std;

int main (){

string str;
getline(cin, str);
cout << str;

cin.ignore();
return 0;
}


Perfecto para mi ^^
Simples y funciona. Me lo guardo  ;-)

amchacon

#9
De nada ^^

Puedes usarlo en cualquier fichero:
Código (cpp) [Seleccionar]
ifstream archivo("Leeme.txt");
string linea;

getline(archivo,linea);
cout<<linea;
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar