Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

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

Шрек из Стали Знаток (378), закрыт 6 лет назад
Помогите пожалуйста, скопировал пример, но он не работает, хотя должен. Что не так?
В учебнике пример работает, но у меня программа не выводит ничего. Думаю, что может быть мой vs использует другой значок для обозначения ентер (13 я тоже пробовал). Программа просто не завершается.
Дополнен 6 лет назад
visual studio еще ругается на getch() поэтому пришлось заменить на cin.get.
Без этого он ее даже не запускал
Дополнен 6 лет назад
К сожалению, ничего не помогло.
getch не работает также как и getche.
Но, я внес cout в блок цикла, и программа завершилась. Ответ правильный, но выглядит иначе, чем в учебнике. Хз, в чем причина.
Лучший ответ
Dmitry Просветленный (23059) 6 лет назад
VS пишет, что вместо имени getch следует использовать _getch(). Эта функция сразу же возвращает символ, как нажали клавишу, но не выводит его на экран.
При использовании getchar() и cin.get() символы выводятся на экран, кроме того, консоль ждет подтверждения ввода нажатием Enter. Поэтому вместо '\r' тут будет символ '\n'. Из-за этого программа while не покидает.
Остальные ответы
Овсей Мордехаевич Просветленный (39365) 6 лет назад
Перед return 0 программу нужно остановить, например
cin >> "Нажмите Entrer">> ch;
Есть и другие способы останова, например
getch();
требует #include conio.h
cares yoat Мастер (1591) 6 лет назад
есть команда cin.get
которая после выполнения программы ждет пока вы нажмите enter
если вы чтобы еще писало нажать enter то напишите cout ("нажмите ентер для закрытия программы")
Николай Веселуха Высший разум (380269) 6 лет назад
#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");
}
Похожие вопросы