Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Đọc ký tự từ stdin không chờ newline trong C++


Không có giải pháp di động (portable) cho việc này. Trên Windows, dùng hàm getch() từ thư viện conio.h (Console I/O).

Ví dụ Windows

#include <iostream>
#include <conio.h>
using namespace std;

int main() {
    char c;
    while (1) { // vòng lặp vô tận
        c = getch();
        cout << c;
    }
}

Chương trình xuất ra ký tự bạn nhập. Chỉ chạy trên Windows do conio.h chỉ có trên Windows.

Trên UNIX, có thể đạt được bằng cách chuyển terminal sang chế độ raw (raw mode).

Ví dụ UNIX

#include <iostream>
#include <stdio.h>
#include <stdlib.h>

int main() {
    char c;
    // Chuyển terminal sang raw mode
    system("stty raw");
    while (1) {
        c = getchar();
        // Thoát khi nhấn '.'
        if (c == '.') {
            system("stty cooked");
            exit(0);
        }
        cout << c << " was pressed." << endl;
    }
}