Чтение ввода без использования библиотеки conio.h
Сначала я прочитал несколько ссылок и погуглил их. Но я не могу найти способ прочитать ввод, не нажав Enter, не используя getch()
, в то время как getchar() cin>> and getline()
нужно войти, чтобы прочитать ввод. Я занимаюсь вопросами с онлайн-судьями, и они не принимают библиотеку conio.h. Есть ли способ сделать это? Благодарю.
Кстати, моя цель состоит в том, чтобы каждое нажатие чисел входило в массив.
2 ответа
istream& getline (istream& is, string& str)
, использование:
#include<iostream>
int main(){
std::string output;
std::getline(std::cin, output);
}
Одна строка, взятая из std::cin
хранится в output
, Вы можете прочитать каждый output
Чарс используя output[i]
, где i
количество символов, которые вы хотите получить или использовать output.data()
, который возвращает те же данные, хранящиеся в char[]
,
Каждый из этих методов позволяет вам читать char
как персонаж. Кажется, вы хотите получить цифру как число, а не как символ.
char
тоже номер. Каждое письмо имеет свой собственный код.
char code
'0'==48
'1'==49
'2'==50
'3'==51
'4'==52
'5'==53
'6'==54
'7'==55
'8'==56
'9'==57
Как вы можете видеть, цифры красиво устанавливаются одна за другой, а цифры больше о n
имеет код больше о также n
, Как это использовать? Просто: просто возьми char
после char
каждый уменьшается на 48
или же '0'
для лучшей читаемости, чтобы получить цифры в виде чисел.
Чтобы читать цифры, просто используйте std::cin
Я не понимаю, почему вы не хотите нажимать Enter для подтверждения пройденного номера.
Когда вы читаете символ за символом, если вы хотите сделать возможным исправление частично введенного числа, вы должны написать дополнительный код - вы должны обрабатывать Backspace, стрелки, Delete и, возможно, поведение Home, End, Shift в сочетании со стрелками... Это много работы.