Tôi mới dùng C++ và cảm thấy hơi bối rối với câu hỏi này. Tôi sử dụng Mac OS X và lệnh "g ++ -std = C++ 11" để biên dịch mã.Điều gì đã xảy ra khi nhấn ctrl + D trong khi (cin >> i) lặp trong C++?
Có thể câu hỏi này quá rộng, tôi không biết, nhưng nếu ai đó có thể giải thích bằng ví dụ sau, xin vui lòng?
int temp;
while (cin >> temp) {
cout << temp << endl;
}
Khi tôi nhập
1 2 3<ENTER>
It in
1
2
3
như tôi mong đợi, và nhấn
<CTRL+D>
để bỏ thuốc lá.
Nhưng nếu tôi đầu vào
1 2 3<CTRL+D>
It in
1D
2
sau đây với ký tự đầu vào của tôi "3", và sau đó tôi nhấn
<ENTER>
ký tự cuối cùng "3" sẽ được in. Sau đó, tôi nên bấm
<CTRL+D>
lần nữa để thoát.
Và bên cạnh đó, có một ví dụ tương tự như sau:
vector<int> list; int temp;
while (cin >> temp) {
list.push_back(temp);
}
for (auto e : list) {
cout << e << endl;
}
Khi tôi nhập
1 2 3<ENTER><CTRL+D>
It in
1D
2
3
Vì vậy, câu hỏi của tôi là:
Chuyện gì đã xảy ra e ba trường hợp sau đó tôi nhấn
<CTRL+D>
và
<ENTER>
?
Tại sao có ký tự "D" trong trường hợp thứ hai và thứ ba? Và làm thế nào để ngăn chặn nó xảy ra?
Bạn có chắc chắn không nhấn đúng 'CTRL + D' và có thể bạn đã đẩy' D' quá? Hãy thử lại và xem liệu hành vi đó có được lặp lại không! –
@BiagioFesta Điều này không thể đúng vì danh sách là số nguyên. Làm thế nào ông có thể đẩy "D"? –
"D" không phải là ký tự mà chương trình của bạn in (không thể, nó chỉ in số). Đó là điều mà trình điều khiển thiết bị đầu cuối của bạn in. –