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 には区切り文字の指定が出来る利点もある。
最近のコメント