unk*_*own 4 c++ pointers getline
从我读过的,getline()在布尔上下文中使用返回隐式转换为void*.我没有在网上任何地方找到任何真正的参考声明.到处它说,隐式转换不存在,并且,在一个布尔上下文指针应该是相同的种(如果ptr == 0比0被转换为类型指针ptr).
同样在标准中,在布尔上下文中它将转换为未指定的布尔类型.那有什么意思?
这意味着您可以getline()在if语句中使用它,如果它工作,您输入if语句块.
getline()在布尔上下文中使用返回隐式转换为void*.
以上在技术上并不正确(但结果是这样).getline()实际上返回对其使用的流的引用.当流在布尔上下文中使用时,它将转换为可在布尔上下文中使用的未指定类型(C++ 03).在C++ 11中,这已更新并转换为bool.
getline()成功,则返回状态良好的流.当它转换为bool 类似的类型时,它返回一个非空指针(C++ 03),当在布尔上下文中使用时,它等效于true. getline()失败,则返回处于错误状态的流.当它转换为bool 类似的类型时,它返回一个空指针(C++ 03),当在布尔上下文中使用时,它等效于false.我没有在网上任何地方找到任何真正的参考声明.
到处它说,隐式转换不存在,并且,在一个布尔上下文指针应该是相同的种(如果
ptr == 0比0被转换为类型指针ptr).
void*布尔上下文中的null 等效于false,任何其他void*等效项true.(虽然类型实际上没有指定,但你可以把它想象成一个void*(只是为了让它易于思考).
同样在标准中,在布尔上下文中它将转换为未指定的布尔类型.那有什么意思?
这意味着您可以使用任何条件语句:
if (getline())
{
// If getline worked processes data
}
while(getline())
{
// getline. If it works then processes then try again.
}
Run Code Online (Sandbox Code Playgroud)