Привет всем, поэтому я читал о std :: cin.get() func и читал, что мы используем его для захвата символа новой строки, который был введен после ввода любого ввода в консоль. Но я немного запутался при написании небольшой очень простой программы и не мог понять ее поведения.пытается понять std :: cin.get()
поэтому моя программа предназначена для упражнений в C++ primer plus. В любом случае код ниже:
#include <iostream>
#include <cstring>
void countWords() {
char word [100];
char wordDone [] = "done";
int count = 0;
std::cout << "Enter words (to stop, type the word done): \n";
std::cin >> word;
while (strcmp(word, wordDone) != 0) {
std::cin >> word;
count += 1;
}
std::cout << "You entered a total of " << count << " words.";
std::cin.get();
std::cin.get();
}
int main() {
countWords();
std::cin.get();
return 0;
}
Теперь здесь проблема, когда я запускаю код выше, экран дает мне надлежащий выход, но он исчезает, не дожидаясь меня, чтобы войти возвращение.
Но если вместо создания вышеуказанного countWords() func, если я напишу весь код в main() func, он отлично работает, что меня очень сбивает с толку.
Как я понимаю, когда я вхожу в массив символов в консоли и нажимаю return, буфер хранит данные консоли и новую строку в очереди, а после того, как цикл while обрабатывается и отображается cout, возвращается по первому std :: cin.get(). Итак, программа должна дождаться, когда я войду в другое возвращение, которое затем будет отменено вторым cin.get(), и оно также должно спросить меня о другом возврате, так как в главной функции также есть cin.get(). Но по какой-то причине, которую я не могу понять, выходной экран просто исчезает.
Любые комментарии или объяснения пожалуйста ??
Вы должны только нажать дважды войти, согласно тому, что вы описали. –