【发布时间】:2017-10-02 04:43:52
【问题描述】:
这是 Github 上一个非常流行的生物信息学 C++ 项目:
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++ 代码将字符串转换为布尔值?这怎么可能?
【问题讨论】:
-
否,
std::getline返回原始流,如果没有错误,流上的布尔类型转换将返回true。你用的是什么编译器?如果你想解决这个问题,你可以将这一行修改为bool good = getline(*m_pReader, line).good(); -
这表明存在编译器错误(包括编译器和库安装之间可能不匹配);您使用的是什么编译器和设置?
标签: c++ type-conversion implicit-conversion