Ваш первый подход хорош и очень хорош в C ++. Единственная проблема состоит в том, что он будет читать символы не только, разделенные \t
, но также, например, простым пробелом (
);
Код будет выглядеть следующим образом:
#include <iostream>
void main () {
char c1, c2;
while (std::cin >> c1 >> c2) {
if (c1 == 'z' || c2 == 'z') break;
// Otherwise do something useful
}
}
Альтернативный подход - использовать getche()
, чтобы взять один символ из ввода и показать его на экране. Вот код:
#include <iostream>
#include <conio.h>
void main () {
while (true) {
char c1 = getche();
char delimiter = getche();
char c2 = getche();
// Output end of line
std::cout << std::endl;
if (delimiter != '\t' || c1 == 'z' || c2 == 'z') break;
// Otherwise do something useful
}
}
Обратите внимание, что сейчас вам не нужно нажимать клавишу enter
после ввода последовательности. Если хотите, вы можете добавить еще один вызов getche()
и проверить, равен ли символ 32 (введите код).