Помогите пожалуйста, скопировал пример, но он не работает, хотя должен. Что не так?
В учебнике пример работает, но у меня программа не выводит ничего. Думаю, что может быть мой vs использует другой значок для обозначения ентер (13 я тоже пробовал). Программа просто не завершается.

VS пишет, что вместо имени getch следует использовать _getch(). Эта функция сразу же возвращает символ, как нажали клавишу, но не выводит его на экран.
При использовании getchar() и cin.get() символы выводятся на экран, кроме того, консоль ждет подтверждения ввода нажатием Enter. Поэтому вместо '\r' тут будет символ '\n'. Из-за этого программа while не покидает.
#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
есть команда cin.get
которая после выполнения программы ждет пока вы нажмите enter
если вы чтобы еще писало нажать enter то напишите cout ("нажмите ентер для закрытия программы")