std::cin での間違ったループの仕方 ― 2020年01月27日 13時29分33秒
#include <string>
#include <iostream>
int main()
{
std::string input;
for(;;)
{
std::cin >> input;
if( input.empty() )
break;
std::cout << ':' << input << std::endl;
}
}
実は、これでは正しく終了できない。Ctrl-D 等の終端文字を打ち込むと誤動作を始める。
operator>>() は読み込みの状態を返す。
この様に読み込みの状態を元にループを行えば、Ctrl-D での終了がしっかりと処理できる。
#include <string>
#include <iostream>
int main()
{
std::string input;
while( std::cin >> input )
{
std::cout << ':' << input << std::endl;
}
}
次回。
コメント
トラックバック
このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2020/01/27/9207099/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。