C++ の cin>> と std::getline の違いは単語単位か行単位 ― 2020年01月28日 22時04分45秒
C++ には std::getline と言う関数がある。C の getline とはまた別物。
cin>> で回すループをこう書き換える。
#include <string>
#include <iostream>
int main()
{
int input;
while( std::cin >> input )
{
std::cout << "cin" << input << std::endl;
}
}
#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: http://uyota.asablo.jp/blog/2020/01/28/9207655/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。