これはGitHubの上のバイオインフォマティクスのための非常に人気のあるC++プロジェクトです:なぜこのGithubプロジェクトは文字列をboolに変換するのですか?
https://github.com/jts/sga/blob/master/src/Util/ClusterReader.cpp
行がある:
bool good = getline(*m_pReader, line);
私はこの行をコンパイルすることはできませんし、私はドン」作者がなぜそれをしたのか分かりません。
documentationによれば、getline
はboolではない文字列を返します。確かに、これは私がプロジェクトをコンパイルしようとしている間、私が得るものです:
ClusterReader.cpp: In member function ‘bool
ClusterReader::readCluster(ClusterRecord&)’:
ClusterReader.cpp:70:41: error: cannot convert ‘std::basic_istream<char>’ to ‘bool’ in initialization
bool good = getline(*m_pReader, line);
はなぜC++コードは、BOOLする文字列を変換するのですか?それはどのように可能でしょうか?
いいえ、 'std :: getline'は元のストリームを返し、エラーがなければストリームのブール型キャストは' true'を返します。どのコンパイラを使用していますか?これを回避したい場合は、 'bool good = getline(* m_pReader、line).good();'に変更することができます。 – paddy
これは、コンパイラのバグ(コンパイラとライブラリのインストールの不一致を含む)を示唆しています。どのコンパイラと設定を使用していますか? –