Ввод строки(массива символов) с клавиатуры
char A[1000];
for (int i = 0; i < 1000; i++) {
cin >> A[i];
}
Я не знаю начальный размер строки, ввёл случайное большое число. Когда записываю строку с помощью cin запись не прекращается при нажатии Enter, пока не введу все 1000 символов. Как при нажатии Enter прекращать ввод?
Ответы (4 шт):
Автор решения: Стас
→ Ссылка
Используется getch - получение данных о нажатой клавише
#include <iostream>
#include <conio.h>
#include <windows.h>
using namespace std;
int main() {
int key;
char A[1000] = { };
//получает данные о нажатой клавише
key = _getch();
int i = 0;
// сам цикл, которые выполняется до нажатия Enter
while (i != 999 && key != 13) {
key = _getch();
if (key == 13) {
break;
} else {
cin >> A[i];
}
if (i != 999) {
keybd_event(13, 0, 0, 0);
// имитация повторного нажатия Enter,
// чтобы совершился выход из цикла
keybd_event(13, 0, KEYEVENTF_KEYUP, 0);
}
i++;
}
}
После нажатия Enter выполнение цикла прекращается, программа идёт дальше
P.S немного поправил код, чтобы он работал корректно если массив заполняется полностью.
Автор решения: AR Hovsepyan
→ Ссылка
Можно сделать по разному, но читать строку до символа переноса строки, думаю проще всего:
char A[1000];
cin.getline(A, 1000, '\n');