2011-09-15 41 views
17

Tôi đã xem xét không có kết quả, và tôi sợ rằng nó có thể là một câu hỏi đơn giản mà không ai dám hỏi nó.Nhiều đầu vào trên một dòng

Có thể nhập nhiều thứ từ đầu vào chuẩn trong một dòng không? Ý tôi là thế này:

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

Một số câu hỏi không cần phải được hỏi. Điều gì xảy ra khi bạn thử? – outis

+0

Tôi hiện không ở nơi tôi có phương tiện để thử điều này. – Joshua

+3

@Joshua Bạn không có [internet] (http://ideone.com/) [truy cập] (http://codepad.org/)? –

Trả lời

21

Vâng, bạn có thể nhập nhiều mặt hàng từ cin, sử dụng chính xác cú pháp bạn mô tả. Kết quả về cơ bản giống với:

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

Điều này là do kỹ thuật được gọi là "chuỗi điều hành".

Mỗi cuộc gọi đến operator>>(istream&, T) (trong đó T là một số loại tùy ý) trả về tham chiếu đến đối số đầu tiên của nó. Vì vậy, cin >> a trả về cin, có thể được sử dụng làm (cin>>a)>>b v.v.

Lưu ý rằng mỗi cuộc gọi đến operator>>(istream&, T) đầu tiên sử dụng tất cả các ký tự khoảng trắng, sau đó cần nhiều ký tự để đáp ứng thao tác nhập, tối đa (nhưng không bao gồm) ký tự khoảng trắng tiếp theo, ký tự không hợp lệ hoặc EOF.

+0

Cảm ơn bạn. Tôi đã suy nghĩ như vậy, nhưng tôi không thể thực sự kiểm tra nó ở đâu, và tôi cảm thấy ngứa ngáy. – Joshua

+0

Tôi đã nhận thức được điều khoảng trắng hàng đầu, nhưng không phải là phần còn lại. Khéo léo! – Joshua

+1

Lưu ý rằng các ký tự trắng sẽ chỉ được sử dụng nếu cờ 'skipws' được đặt. –

5

Có, bạn có thể.

Từ cplusplus.com:

Bởi vì các chức năng này được điều hành quá tải chức năng, theo cách thông thường, trong đó họ được gọi là:

strm >> variable; 

đâu strm là định danh của một đối tượng istream và variable là một đối tượng thuộc bất kỳ kiểu nào được hỗ trợ làm tham số đúng. Nó cũng có thể gọi là một chuỗi các hoạt động khai thác như:

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

mà là giống như thực hiện nhổ liên tiếp so với cùng đối tượng strm.

Chỉ cần thay thế strm bằng cin.

Các vấn đề liên quan