valor teclado sharp separados por numericos leer introducir ingresar desde datos consola como comas archivos c++ stl iostream

c++ - teclado - ¿Cómo leer el espacio de los números separados de la consola?



leer por consola en c# (5)

Intento hacer una simple tarea de leer números separados por espacios de la consola en un vector<int> , pero no entiendo cómo hacerlo correctamente.

Esto es lo que he hecho hasta ahora:

int n = 0; vector<int> steps; while(cin>>n) { steps.push_back(n); }

Sin embargo, esto requiere que el usuario presione un carácter no válido (como a ) para romper el ciclo while. No lo quiero

Tan pronto como el usuario ingrese números como 0 2 3 4 5 y presione Enter , quiero que se rompa el ciclo. Intenté usar istream_iterator y cin.getline también, pero no pude hacerlo funcionar.

No sé cuántos elementos ingresará el usuario, por lo tanto, estoy usando el vector .

Por favor sugiere la forma correcta de hacer esto.


Además, podría ser útil saber que puede estimular un EOF - Presione ''ctrl-z'' (solo Windows, los sistemas unix usan ctrl-d) en la línea de comando, después de que haya terminado con sus entradas. Debería ayudarlo cuando pruebe pequeños programas como este, sin tener que escribir un carácter no válido.


Este código debería ayudarte, lee una línea en una cadena y luego itera sobre ella sacando todos los números.

#include <iostream> #include <sstream> #include <string> int main() { std::string line; std::getline(std::cin, line); std::istringstream in(line, std::istringstream::in); int n; vector<int> v; while (in >> n) { v.push_back(n); } return 0; }


Indique al usuario después de cada número o tome el conteo de números por adelantado y realice un ciclo en consecuencia. No es una gran idea, pero vi esto en muchas aplicaciones.


Para elaborar en la respuesta de jonsca, aquí hay una posibilidad, suponiendo que el usuario ingresa números enteros válidamente:

string input; getline(cin, input); istringstream parser(input); vector<int> numbers; numbers.insert(numbers.begin(), istream_iterator<int>(parser), istream_iterator<int>());

Esto leerá correctamente y analizará una línea válida de enteros de cin . Tenga en cuenta que esto está utilizando la función gratuita getline , que funciona con std::string s, y no istream::getline , que funciona con cadenas estilo C.


Utilice una línea getline combinada con un istringstream para extraer los números.

std::string input; getline(cin, input); std::istringstream iss(input); int temp; while(iss >> temp) { yourvector.push_back(temp); }