2009-10-18 39 views
16

Tôi muốn đọc từ cin trong C++ từ vị trí hiện tại cho đến khi ký tự dòng mới thành chuỗi. Các ký tự cần đọc có thể bao gồm dấu cách. vượt qua đầu tiên của tôi thất bại vì nó dừng lại trên không gian đầu tiên:Làm thế nào để đọc cin với khoảng trắng cho đến khi một ký tự dòng mới?

string result; 

cin >> result; 

Nếu cin được đưa ra:

(cd /my/dir; doSometing)\n 

Kết quả biến chỉ được:

(cd 

Tôi nghĩ rằng tôi nên có thể sử dụng các trình xử lý luồng để thực hiện điều này, nhưng phần mềm bỏ qua không hoàn toàn đúng ở chỗ nó ném trả về bằng dấu cách và các tab, cộng với âm thanh như thế là dành cho khoảng trắng hàng đầu bị bỏ qua.

Có lẽ tôi cần sử dụng streambuf một cái gì đó như thế này?

streambuf buf; 

cin >> buf; 

Trả lời

21
std::string str; 
std::getline(std::cin, str); 
+3

Note (kể từ khi tôi chỉ bị đốt cháy của thành viên này): Không xuất hiện để làm việc với AIX 5.1. Tôi đã phải sử dụng 'fgets' được định nghĩa trong stdio.h. – Pete

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