Getch c не работает visual studio

Обновлено: 29.06.2024

Как не крутил - все выдает ошибку: не может найти - iostream.h, но затем в итоге узнал, что если
написать такую строчку: std::cout << "Введите целое число\n"; - то все заработало, правда кодировка не та.
Начал условершенствовать программу и вспомнил, что есть функция задержки: getch(); а то сами понимаете окно с надписью появляется и исчезает, но когда вставил функцию: getch(); - но пишет что неизвестна. Вставил тогда: std::getch(); - как для ввода по примеру - и опять не работает - я вообще не понимаю почему?

Будьте добры подскахите пожалуйста как сделать чтоб заработало. Я и не понял с функцией std::cout - почему писать надо так?

еще: а вам действительно нужна настолько древняя версия Visual Studio ?

Вместо нее Вы можете использовать:
std::cin.get()
или
std::cin.getline().

А еще можно написать вначале программы
using namespace std

Все получилось! Вы все правильно поняли и ответили на мой вопрос - как я хотел.
Еще раз Вам большое спасибо за отклик и помощь. У меня в связи с этим к Вам еще несколько вопросов маленьких - будте добры разрешите мне Вам их задать:

1. using namespace std; - это введение studio? Так как я ранее писал на с++ и потом долго не писал, и не могу понять откуда появилась такая конструкция -и был удивлен, что надо писать
std::cout и т.д. - т.е. что надо добавлять std;
2. при выводе в окне слов русских пишутся крокозябры - проблема с отображением русских букв - будте добры подскажите пожалуйста с чем это связано;
3. Разрешите пожалуйста, Если Вам нетрудно дать какую-нибудь дополнительную информацию (аська или е-mail), обещаю много Вас не беспокоивать и не спрашивать, но если будут вопросы - разрешите пожалуйста, если что я Вам их позадаю.

Все получилось! Вы все правильно поняли и ответили на мой вопрос - как я хотел.
Еще раз Вам большое спасибо за отклик и помощь. У меня в связи с этим к Вам еще несколько вопросов маленьких - будте добры разрешите мне Вам их задать:

1. using namespace std; - это введение studio? Так как я ранее писал на с++ и потом долго не писал, и не могу понять откуда появилась такая конструкция -и был удивлен, что надо писать
std::cout и т.д. - т.е. что надо добавлять std;
2. при выводе в окне слов русских пишутся крокозябры - проблема с отображением русских букв - будте добры подскажите пожалуйста с чем это связано;
3. Разрешите пожалуйста, Если Вам нетрудно дать какую-нибудь дополнительную информацию (аська или е-mail), обещаю много Вас не беспокоивать и не спрашивать, но если будут вопросы - разрешите пожалуйста, если что я Вам их позадаю.

Моя аська:420295240. Очень рад буду Вам!

1. Нет, в Линуксах тоже такая конструкция работает. Связано это с тем, что функции в разных библиотеках могут называться одинаково, но работать по-разному. Вот, чтобы их не путать и было введено namespace. А std - это для "стандартных" библиотечных функций.

> 1. Нет, в Линуксах тоже такая конструкция работает. Связано это с тем,
> что функции в разных библиотеках могут называться одинаково, но работать
> по-разному. Вот, чтобы их не путать и было введено namespace. А std -
> это для "стандартных" библиотечных функций.

Хочу подчеркнуть, что это не просто "работает и в линуксах", а
это поведение, диктуемое стандартом языка С++. Так что работать должно
во всех совместимых со стандартом компиляторах языка С++.
(а других и не бывает, ибо это уже не компилятор С++).

Кстати VC5 со стандартом (90) дружит плохо.

> 2. Вы, наверняка, используете кодовую страницу Windows (1251). А консоль
> отображает буквы в кодовой странице DOS (866). Для правильного
> отображения русских букв необходимо либо конвертировать текст при помощи
> функций CharToOem()/CharToOemBuff(), либо "играться" с настройками
> консоли (что-то типа SetConsoleOutputCP()).

можно просто переключить консоль в кодировку cp1251:
выдать комманду:

(при этом консоль должна быть сконфигурена с юникодными или ANSI -шрифтами,
обычно Lucida подходит).

Posted via ActualForum NNTP Server 1.4

Извините за глупость - но я немного не понял про кодировку и задам следующие вопросы:
1. Функцию: ChatToOem(); - не понял как применить: cout << ChatToOem("Введите целое число\n"); - ?, но так не получается и не выходит - пишет ошибку;

2. Выдать команду: chcp 1251 - тоже не понятно - на каком этапе - в теле программы? Тоже выдает ошибку.

Извините за глупость - но я немного не понял про кодировку и задам следующие вопросы:
1. Функцию: ChatToOem(); - не понял как применить: cout << ChatToOem("Введите целое число\n"); - ?, но так не получается и не выходит - пишет ошибку;

2. Выдать команду: chcp 1251 - тоже не понятно - на каком этапе - в теле программы? Тоже выдает ошибку.

Извините пожалуйста за глупые вопросы.
1.

The CharToOem function translates a string into the OEM-defined character set.

BOOL CharToOem(
LPCTSTR lpszSrc,
LPSTR lpszDst
);
Parameters

ChatToOem() вообще говоря использовать нельзя. Она устаревшая.

> 2. Выдать команду: chcp 1251 - тоже не понятно - на каком этапе - в теле
> программы? Тоже выдает ошибку.

В консоли ДО запуска твоей программы.

Posted via ActualForum NNTP Server 1.4

Как не крутил - все выдает ошибку: не может найти - iostream.h, но затем в итоге узнал, что если
написать такую строчку: std::cout << "Введите целое число\n"; - то все заработало, правда кодировка не та.
Начал условершенствовать программу и вспомнил, что есть функция задержки: getch(); а то сами понимаете окно с надписью появляется и исчезает, но когда вставил функцию: getch(); - но пишет что неизвестна. Вставил тогда: std::getch(); - как для ввода по примеру - и опять не работает - я вообще не понимаю почему?

Будьте добры подскахите пожалуйста как сделать чтоб заработало. Я и не понял с функцией std::cout - почему писать надо так?

Читайте также: