Namespaces
Variants

std:: getchar

From cppreference.net
< cpp ‎ | io ‎ | c
ヘッダーで定義 <cstdio>
int getchar ( ) ;

stdin から次の文字を読み取ります。

std:: getc ( stdin ) と同等です。

目次

パラメータ

(なし)

戻り値

成功時に取得された文字、または EOF 失敗時。

失敗がファイル終端状態によって引き起こされた場合、追加で eof インジケータを設定する( std::feof() 参照)。 stdin に対して。失敗が他の何らかのエラーによって引き起こされた場合、 error インジケータを設定する( std::ferror() 参照)。 stdin に対して。

std::getchar にエラーチェックを追加。ESCキーを入力してプログラムを終了。

#include <cctype>
#include <cstdio>
#include <cstdlib>
#include <iomanip>
#include <iostream>
int main()
{
    for (int ch; (ch = std::getchar()) != EOF ;) // 標準入力から"abc"を読み取り/出力
    {
        if (std::isprint(ch))
            std::cout << static_cast<char>(ch) << '\n';
        if (ch == 27) // ASCIIにおける'ESC'(エスケープ)
            return EXIT_SUCCESS;
    }
    // EOF到達の理由をテスト
    if (std::feof(stdin)) // 終端ファイル状態による失敗の場合
        std::cout << "ファイル終端に到達しました\n";
    else if (std::ferror(stdin)) // 他のエラーによる失敗の場合
    {
        std::perror("getchar()");
        std::cerr << "getchar()がファイル" << std::quoted(__FILE__)
                  << "の行番号#" << __LINE__ - 14 << "で失敗しました\n";
        std::exit(EXIT_FAILURE);
    }
    return EXIT_SUCCESS;
}

出力例:

abc
a
b
c
^[

関連項目

ファイルストリームから文字を取得する
(関数)