elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  hacer una cout en la misma linea de cin Solucionado
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: hacer una cout en la misma linea de cin Solucionado  (Leído 12,429 veces)
nolasco281


Desconectado Desconectado

Mensajes: 319


Ver Perfil
hacer una cout en la misma linea de cin Solucionado
« en: 28 Enero 2014, 05:13 am »

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



« Última modificación: 29 Enero 2014, 03:28 am por nolasco281 » En línea

Lo que se puede imaginar... se puede programar.
Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.724


<3


Ver Perfil WWW
Re: hacer una cout en la misma linea de cin
« Respuesta #1 en: 28 Enero 2014, 08:05 am »

Guardandolo en una variable? La verdad no entendí  :-[


En línea

Te vendería mi talento por poder dormir tranquilo.
nolasco281


Desconectado Desconectado

Mensajes: 319


Ver Perfil
Re: hacer una cout en la misma linea de cin
« Respuesta #2 en: 28 Enero 2014, 08:17 am »

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.
En línea

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


Desconectado Desconectado

Mensajes: 455



Ver Perfil
Re: hacer una cout en la misma linea de cin
« Respuesta #3 en: 28 Enero 2014, 12:03 pm »

Que te parece este? :D
Lo vi en un post algo antiguo.
Es de eternal idol la solución.
Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main (){
  5.  string frase;
  6.  cout << "Escriba algo :)";
  7.  cin.getline((char*)frase.c_str(), 100);
  8.  cout << frase.c_str() << " bien y tu";
  9.  
  10.  
  11. cin.ignore();
  12. return 0;
  13. }
  14.  
« Última modificación: 28 Enero 2014, 12:14 pm por vangodp » En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: hacer una cout en la misma linea de cin
« Respuesta #4 en: 28 Enero 2014, 12:28 pm »

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
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main ()
  5. {
  6.    string frase;
  7.    cout << "Escriba algo :)";
  8.  
  9.    getline(cin,frase);
  10.  
  11.    cout << frase << " bien y tu";
  12.  
  13.    cin.ignore();
  14.    return 0;
  15. }

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
  1. #include <iostream>
  2. #include<conio.h>
  3. using namespace std;
  4.  
  5. string LeerPalabra()
  6. {
  7.    string palabra;
  8.    int ch;
  9.  
  10.    while ((ch = getch()) != ' ' && ch != '\n' && ch != EOF)
  11.    {
  12.        cout<<(char)ch;
  13.        palabra += ch;
  14.    }
  15.    cout<<(char)ch;
  16.    return palabra;
  17. }
  18.  
  19. int main ()
  20. {
  21.    string frase;
  22.    cout << "Escriba algo :)";
  23.  
  24.    frase = LeerPalabra();
  25.  
  26.    cout <<" bien y tu";
  27.  
  28.    cin.ignore();
  29.    return 0;
  30. }

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).
En línea

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


Desconectado Desconectado

Mensajes: 455



Ver Perfil
Re: hacer una cout en la misma linea de cin
« Respuesta #5 en: 28 Enero 2014, 12:48 pm »

Pues entonces lo arreglo algo :D
Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main (){
  5.  int TAM = 500;
  6.  char frase[TAM];
  7.  cout << "Escriba algo :)";
  8.  cin.getline(frase, TAM, '\n'); //mientras no traspase 500 y no pulses enter lee toda la linea
  9.  cout << frase << " bien y tu";
  10.  
  11.  
  12. cin.ignore();
  13. return 0;
  14. }
  15.  
En línea

vangodp


Desconectado Desconectado

Mensajes: 455



Ver Perfil
Re: hacer una cout en la misma linea de cin
« Respuesta #6 en: 28 Enero 2014, 12:59 pm »

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
  1. #include <iostream>
  2. #include<conio.h>
  3. #include<fstream>
  4. using namespace std;
  5.  
  6. string LeerPalabra() {
  7.    string palabra;
  8.    int ch;
  9.  
  10.    while ((ch = getch()) != ' ' && ch != '\n' && ch != EOF) {
  11.        cout<<(char)ch;
  12.        palabra += ch;
  13.    }
  14.    cout<<(char)ch;
  15.    return palabra;
  16. }
  17.  
  18. int main () {
  19.    string frase;
  20.    cout << "Escriba algo :)";
  21.  
  22.    frase = LeerPalabra();
  23.  
  24.    cout <<" bien y tu";
  25.  
  26.    cin.ignore();
  27.    return 0;
  28. }

tuve que incluir fstream, me daba error por el EOF.
No sera por eso?
« Última modificación: 28 Enero 2014, 13:01 pm por vangodp » En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: hacer una cout en la misma linea de cin
« Respuesta #7 en: 28 Enero 2014, 15:05 pm »

Si lo que quieres es leer la línea entera:
Código
  1. #include <iostream>
  2. #include<conio.h>
  3. using namespace std;
  4.  
  5. string LeerPalabra()
  6. {
  7.    string palabra;
  8.    int ch;
  9.  
  10.    while ((ch = getch()) != 13 && ch != EOF)
  11.    {
  12.        cout<<(char)ch;
  13.        palabra += ch;
  14.    }
  15.    return palabra;
  16. }
  17.  
  18. int main ()
  19. {
  20.    string frase;
  21.    cout << "Escriba algo ";
  22.  
  23.    frase = LeerPalabra();
  24.  
  25.    cout <<" bien y tu";
  26.  
  27.    cin.ignore();
  28.    return 0;
  29. }
  30.  

Pues entonces lo arreglo algo :D
Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main (){
  5.  int TAM = 500;
  6.  char frase[TAM];
  7.  cout << "Escriba algo :)";
  8.  cin.getline(frase, TAM, '\n'); //mientras no traspase 500 y no pulses enter lee toda la linea
  9.  cout << frase << " bien y tu";
  10.  
  11.  
  12. cin.ignore();
  13. return 0;
  14. }
  15.  
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
  1. getline(cin,frase);
En línea

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


Desconectado Desconectado

Mensajes: 455



Ver Perfil
Re: hacer una cout en la misma linea de cin
« Respuesta #8 en: 28 Enero 2014, 15:18 pm »

getline(cin,frase);  ;D

Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main (){
  5.  
  6. string str;
  7. getline(cin, str);
  8. cout << str;
  9.  
  10. cin.ignore();
  11. return 0;
  12. }
  13.  

Perfecto para mi ^^
Simples y funciona. Me lo guardo  ;-)
« Última modificación: 28 Enero 2014, 15:24 pm por vangodp » En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: hacer una cout en la misma linea de cin
« Respuesta #9 en: 28 Enero 2014, 16:16 pm »

De nada ^^

Puedes usarlo en cualquier fichero:
Código
  1. ifstream archivo("Leeme.txt");
  2. string linea;
  3.  
  4. getline(archivo,linea);
  5. cout<<linea;
« Última modificación: 28 Enero 2014, 16:19 pm por amchacon » En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines