C++ の cin>> と std::getline の違いは単語単位か行単位2020年01月28日 22時04分45秒

前日に間違った cint>> の使い方を見たときに、cin と getline のどちらを使うべきかちょっと考える機会があったので、ちょっと追記。

C++ には std::getline と言う関数がある。C の getline とはまた別物。

#include <string>
#include <iostream>

int main()
{
    int input;
    while( std::cin >> input )
    {
        std::cout << "cin" << input << std::endl;
    }
}
cin>> で回すループをこう書き換える。
#include <string>
#include <iostream>

int main()
{
    std::string input;
    while( std::getline( std::cin, input ) )
    {
        std::cout << "getline:" << input << std::endl;
    }
}

この二つの大きな違いは単語毎に区切るか、行毎に区切るか。

% c++ cin.cpp -o cin
% ./cin
1 2 3
cin:1
cin:2
cin:3
^C
% c++ getline.cpp -o getline
% ./getline
1 2 3
getline:1 2 3

他には cin だと、型に適した変換が出来る利点があり、getline には区切り文字の指定が出来る利点もある。

前回次回

コメント

コメントをどうぞ

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

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

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

トラックバック

このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2020/01/28/9207655/tb

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