2011-09-15 12 views
17

No he tenido éxito, y me temo que podría ser una pregunta tan simple que nadie se atreva a preguntarla.Entradas múltiples en una línea

¿Se puede ingresar varias cosas desde la entrada estándar en una línea? Me refiero a esto:

float a, b; 
char c; 

// It is safe to assume a, b, c will be in float, float, char form? 
cin >> a >> b >> c; 
+3

Algunas preguntas no necesitan ser formuladas. ¿Qué pasa cuando lo intentas? – outis

+0

Actualmente no estoy en un lugar donde tenga los medios para probar esto. – Joshua

+3

@Joshua No tiene [internet] (http://ideone.com/) [access] (http://codepad.org/)? –

Respuesta

21

Sí, puede introducir varios artículos de cin, utilizando exactamente la sintaxis que se describen. El resultado es esencialmente idéntica a:

cin >> a; 
cin >> b; 
cin >> c; 

Esto es debido a una técnica llamada "encadenamiento operador".

Cada llamada a operator>>(istream&, T) (donde T es un tipo arbitrario) devuelve una referencia a su primer argumento. Por lo tanto, cin >> a devuelve cin, que se puede utilizar como (cin>>a)>>b y así sucesivamente.

Observe que cada llamada a operator>>(istream&, T) primero consume todos los caracteres de espacio en blanco, luego tantos caracteres como sea necesario para satisfacer la operación de entrada, hasta (pero sin incluir) el primer carácter de espacio en blanco, carácter no válido o EOF.

+0

Gracias. Estaba pensando eso, pero realmente no podía probarlo donde estoy, y estaba ansioso por saber. – Joshua

+0

Estaba al tanto de los principales espacios en blanco, pero no del resto. ¡Ordenado! – Joshua

+1

Tenga en cuenta que los caracteres de espacio en blanco solo se consumirán si se establece el indicador 'skipws'. –

5

Sí, puedes.

De cplusplus.com:

Debido a que estas funciones se sobrecarga de operadores funciones, de la forma habitual en la que se les llama es:

strm >> variable; 

Dónde strm es el identificador de un objeto istream y variable es un objeto de cualquier tipo soportado como parámetro correcto. También es posible llamar a una sucesión de operaciones de extracción como:

strm >> variable1 >> variable2 >> variable3; //... 

que es la misma como la realización de extracciones sucesivas de un mismo objeto strm.

Simplemente reemplace strm con cin.

Cuestiones relacionadas