我正在编写一个简单的函数来根据一组应该命名为cam1_0.bmp,cam1_1.bmp的文件派生出一个新的文件名,然后尝试了这个.
static int suffix = 0;
std::string fPre("cam");
std::ifstream fs;
std::string fName;
do {
fName = fPre;
fName.append(std::to_string(camera)).append("_").append(std::to_string(suffix)).append(".bmp");
fs.open(fName);
} while (fs.good() && ++suffix);
Run Code Online (Sandbox Code Playgroud)
这有效,它让我想知道对于0或1以外的数值,相应布尔值的标准定义行为是什么.通过本实验,我知道包括除0以外的负值的所有值都计算为true.根据标准,只有0被认为是假的吗?
Kei*_*son 13
在C++中,整数没有布尔值.(不同的语言有不同的规则,但这个问题是关于C++的.)
的结果转换为整数值输入bool
(其通常隐式进行转换)被很好地定义.转换的结果0
来bool
为false
; 将任何非零值转换为bool
is的结果true
.
这同样适用于浮点值(0.0
转换为false
,所有其他值转换为true
)和指针(空指针转换为false
,所有非空指针值转换为true
).