Ввод строки(массива символов) с клавиатуры

char A[1000];
for (int i = 0; i < 1000; i++) {
    cin >> A[i];
}

Я не знаю начальный размер строки, ввёл случайное большое число. Когда записываю строку с помощью cin запись не прекращается при нажатии Enter, пока не введу все 1000 символов. Как при нажатии Enter прекращать ввод?


Ответы (4 шт):

Автор решения: lleballex
char A[1000];
cin.getline(a, 1001);
cout << A;
→ Ссылка
Автор решения: Стас

Используется 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 немного поправил код, чтобы он работал корректно если массив заполняется полностью.

→ Ссылка
Автор решения: Сергей

После cin в цикле ставить проверку

if(A[i] == '\n') {
    break;
}
→ Ссылка
Автор решения: AR Hovsepyan

Можно сделать по разному, но читать строку до символа переноса строки, думаю проще всего:

char A[1000];
cin.getline(A, 1000, '\n');
→ Ссылка