std::stream での読み込みの例2012年07月29日 11時15分51秒

std::stream で入力を処理したいが、読み込みのループはちょくちょく使うのでメモ。istream::getline を使うので、文字入力用。

この例では、std::cout で出力。std::cout を任意に書き換えて使う。


void process_input(const char* filename)
{
    char buffer[1024];
    std::istream *in = NULL;
 
    if(filename == NULL || "-" == filename)
        in = &std::cin;
    else
        in = new std::ifstream(filename);
 
    while(in->good())
    {
        in->getline(buffer, sizeof(buffer));
        if(*buffer == 0)
            break;
        std::cout << buffer << std::endl;
    }
    if(in != &std::cin)
        delete in;
}

buffer の最初が 0 であれば、処理を止める。また、good() で無い場合も終了。これは EOF も含まれる。

なお、ios::good() と !ios::bad() は等価では無い。ios::bad() は EOF を含めないからだ。

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2012/07/29/6525188/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。