Lección 5 · 5 de 20
Leer del teclado · C++
Pida datos al usuario en C++ con std::cin y >> para números y palabras, y con std::getline para líneas completas con espacios.

`std::cin` es la entrada del teclado, la pareja de std::cout. Con `>>` lee una palabra y la convierte al tipo de la variable: std::cin >> tickets guarda un int y std::cin >> price, un double.
>> se detiene en el primer espacio, así que para un nombre completo se usa `std::getline(std::cin, name)`, que lee la línea entera con sus espacios.
En este ejemplo las respuestas salen del archivo input.txt, como si alguien las tecleara, y por eso no aparecen en la salida: se ve cada pregunta y, en la línea siguiente, la respuesta del programa. En la consola de DMarlon Studio (F9) puede escribirlas usted mismo.
Cuidado al mezclar los dos: después de std::cin >> price queda pendiente el Intro de esa línea, y un getline leería una línea vacía. `std::cin >> std::ws` salta los espacios y saltos de línea pendientes antes de leer el título de la película.
>> también se encadena: std::cin >> row >> seat lee dos números escritos en la misma línea, separados por un espacio.
Código · main.cpp
#include <iostream>#include <string>int main() { std::string name; std::cout << "What is your name? "; // getline reads the whole line, spaces included. std::getline(std::cin, name); std::cout << "\nHello, " << name << "!\n"; int tickets; double price; std::cout << "How many tickets? "; // >> reads one word and converts it to the type of the variable. std::cin >> tickets; std::cout << "\nPrice per ticket? "; std::cin >> price; std::cout << "\n" << tickets << " tickets cost " << tickets * price << " euros\n"; // After >>, the Enter key is still waiting: std::ws skips it. std::string film; std::cout << "Which film? "; std::getline(std::cin >> std::ws, film); std::cout << "\nEnjoy " << film << ", " << name << "!\n"; // Several values on one line: >> skips the spaces between them. int row, seat; std::cout << "Row and seat? "; std::cin >> row >> seat; std::cout << "\nYour seat: row " << row << ", seat " << seat << '\n'; return 0;}Entrada (lo que se teclea) · input.txt
Ana Garcia 3 8.50 The Lord of the Rings 7 12
Salida · c++ -std=c++17 main.cpp -o main && ./main
What is your name? Hello, Ana Garcia! How many tickets? Price per ticket? 3 tickets cost 25.5 euros Which film? Enjoy The Lord of the Rings, Ana Garcia! Row and seat? Your seat: row 7, seat 12
Para recordar
std::cin >> xlee una palabra y la convierte al tipo dex.std::getline(std::cin, s)lee una línea completa.- Tras
>>, usestd::cin >> std::wsantes degetline. std::cin >> a >> blee varios valores seguidos.
Ejercicio
Pregunte también cuántas raciones de palomitas quiere (a 4.50 euros cada una) y escriba el total de entradas y palomitas. Añada la respuesta al final de input.txt.