Другие языки программирования и технологии

Как в с++ обозначить нажатия enter? Скопировал пример из учебника, но программа не завершается, т. е не выводит ничего.

Помогите пожалуйста, скопировал пример, но он не работает, хотя должен. Что не так?
В учебнике пример работает, но у меня программа не выводит ничего. Думаю, что может быть мой vs использует другой значок для обозначения ентер (13 я тоже пробовал). Программа просто не завершается.
Иван Зюзь
Иван Зюзь
364
VS пишет, что вместо имени getch следует использовать _getch(). Эта функция сразу же возвращает символ, как нажали клавишу, но не выводит его на экран.
При использовании getchar() и cin.get() символы выводятся на экран, кроме того, консоль ждет подтверждения ввода нажатием Enter. Поэтому вместо '\r' тут будет символ '\n'. Из-за этого программа while не покидает.
ЯБ
Яхё Бакиров
20 861
Лучший ответ
#include <iostream>
#include <string>
#include <tuple>
#include <sstream>
using namespace std;
class Statistic {
public:
void set(const wstring& line) {
line_ = line;
}
tuple<size_t, size_t, size_t> get()const {
wistringstream iss(line_);
wstring tmp;
auto word = 0U;
auto sign = 0U;
while (iss >> tmp) {
++word;
sign += tmp.length();
}
auto space = line_.length() - sign;
return { word, sign, space };
}
private:
wstring line_;
};
int main() {
wcin.imbue(locale(".866"));
wcout.imbue(locale(".866"));
wcout << L"Введите строку: ";
wstring line;
getline(wcin, line);
Statistic stat;
stat.set(line);
auto[word, sign, space] = stat.get();
wcout
<< L"Слов: " << word << '\n'
<< L"Символов: " << sign << '\n'
<< L"Пробелов: " << space << endl;
system("pause");
}
Перед return 0 программу нужно остановить, например
cin >> "Нажмите Entrer">> ch;
Есть и другие способы останова, например
getch();
требует #include conio.h
Samat Samat
Samat Samat
39 365
есть команда cin.get
которая после выполнения программы ждет пока вы нажмите enter
если вы чтобы еще писало нажать enter то напишите cout ("нажмите ентер для закрытия программы")

Похожие вопросы