Я новичок в C++ и немного смущен этим вопросом. Я использую Mac OS X и команду «g ++ -std = C++ 11» для компиляции кода.Что произошло, когда нажмите ctrl + D во время (cin >> i) цикла на C++?
Возможно, этот вопрос слишком широк, я не знаю, но если кто-то может объяснить следующим примером, пожалуйста?
int temp;
while (cin >> temp) {
cout << temp << endl;
}
Когда вход
1 2 3<ENTER>
Он печатает
1
2
3
, как я ожидал, и нажмите
<CTRL+D>
, чтобы бросить курить.
Но если вход
1 2 3<CTRL+D>
Он печатает
1D
2
следующие с моей входной символ "3", а затем я нажимаю
<ENTER>
последний символ "3" будут напечатаны. Затем я должен нажать
<CTRL+D>
еще раз, чтобы бросить курить.
И кроме того, есть подобный пример следующим образом:
vector<int> list; int temp;
while (cin >> temp) {
list.push_back(temp);
}
for (auto e : list) {
cout << e << endl;
}
Когда вход
1 2 3<ENTER><CTRL+D>
Он печатает
1D
2
3
Так что мой вопрос:
Что произошло в е три случая, то я нажимаю
<CTRL+D>
и
<ENTER>
?
Почему во втором и третьем случаях присутствует символ «D»? И как предотвратить это?
Вы точно не нажали кнопку 'CTRL + D' и, возможно, вы тоже нажали' D'? Повторите попытку и проверьте, повторяется ли поведение! –
@BiagioFesta Это не может быть правдой, так как список имеет целые числа. Как он может нажать «D»? –
«D» не является символом, который печатает ваша программа (он не может, он печатает только цифры). Это то, что печатает ваш драйвер терминала. –