草庐IT

bool2str

全部标签

c++ - 在 c/c++ 中添加两个 bool 值

我试着把bool值加在一起,说:booli=0,j=0,k=0;cout结果为4,这意味着结果被转换为'int'值。我想问:这是C/C++的标准操作吗?编译器是否总是保证在溢出时将临时值转换为更大的类型?谢谢!感谢您的回答,一个跟进问题:说,如果我这样做:unsignedshorti=65535,j=65535;cout结果是4。为什么它被提升为'int'? 最佳答案 导致转换的不是溢出,而是你做算术的事实。在C++(以及行为起源的C)中,内置类型的基本算术运算符的操作数在进行计算之前经过一组定义明确的提升。这些规则中最基本的(有些

c++ - std::string::c_str() 是否总是返回以 null 结尾的字符串?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:stringc_str()vs.data()我使用strncpy(dest,src_string,32)将std::string转换为char[32]来创建我的C++类使用遗留C代码。但是std::string的c_str()方法是否总是返回以null结尾的字符串?

bool 值的 C++ 短路

我是C++的新手,很好奇编译器如何处理bool值的惰性求值。例如,if(A==1||B==2){...}如果A确实等于1,那么B==2部分是否曾经计算过? 最佳答案 不,B==2部分未被评估。这叫做short-circuitevaluation.编辑:作为RobertC.Cartainorightlypointsout,如果逻辑运算符重载,则不会发生短路评估(话虽如此,我不明白为什么有人会重载逻辑运算符)。 关于bool值的C++短路,我们在StackOverflow上找到一个类似的问题

c++ - 显式运算符 bool 错误

我得到CompilerErrorC2071当我尝试实现explicitoperatorbool时:classC{public:explicitoperatorbool()const{return!!*this;}};为什么?我该如何解决这个问题?我正在使用VisualStudio2012RC。 最佳答案 VisualStudio2012不支持显式转换运算符,请参阅C++11FeaturesinVisualC++11.这些文章讨论了safeboolidiom:http://www.artima.com/cppsource/safebo

c++ - string::c_str() 是否允许在堆上分配任何东西?

如果我需要从std::string中获取一个以NUL结尾的char数组,在这种情况下我需要确保不会分配任何内容,是使用c_str这样做安全吗?例如,如果我在析构函数中并且我想将一些数据从string复制到一个预先分配的固定大小的缓冲区中,我可以使用c_str和确定它不会抛出任何东西吗? 最佳答案 标准规定调用c_str()可能会使引用string元素的引用、指针和交互器无效,这意味着允许重新定位(21.3/5"类模板basic_string").您可能只想调用string::copy()来获取拷贝(如果需要,您需要自己添加空终止符)

c++ - 将流运算符 >> 评估为 bool 值

以下代码在VisualStudio2008中编译但在VisualStudio2013及更高版本中失败。std::stringstr("foo");std::stringstreamss(str);floatf=0;if((ss>>f)==false)std::cout错误信息是errorC2678:binary'==':nooperatorfoundwhichtakesaleft-handoperandoftype'std::basic_istream>'(orthereisnoacceptableconversion)并通过如下更改成功修复:if(!(ss>>f))std::cout

c++ - 检查 bool 是否在混合 C/C++ 中定义

所以我在继承一些代码时遇到了问题。此代码在纯C环境中构建良好,但现在我需要使用C++来调用此代码。标题problem.h包含:#ifndef_BOOLtypedefunsignedcharbool;staticconstboolFalse=0;staticconstboolTrue=1;#endifstructastruct{boolmyvar;/*andabunchmore*/}当我将其编译为C++代码时,出现errorC2632:'char'followedby'bool'isillegal如果我将#include"problem.h"包装在extern"C"{...}中,我会得到

c++ - bool 在内存中是如何表示的?

如前所述inthedocs,bool数据类型至少占用一个字节的内存。AsimilarquestionwasaskedonSObefore(Howabooltypevariableisstoredinmemory?(C++)),但是这个讨论和文档似乎只讨论了boolean数据类型占用的空间量,而不是当我在内存中实际发生的事情这样做:boolb=true;那么内存中到底发生了什么?未用于存储此信息的7位会发生什么变化?标准是否为此规定了行为?它们是未定义的吗?或者C++总部的某个人只是这样做了:enumbool:char{false=0,true=1}; 最佳答

c++ - 为什么编译器选择 bool 而不是 string 来进行 L""的隐式类型转换?

最近引入了一个方法的重载,应用程序开始失败。终于追踪到,新方法在我没想到的地方被调用了。我们有setValue(conststd::wstring&name,conststd::wstring&value);std::wstringavalue(func());setValue(L"string",avalue);std::wstringbvalue(func2()?L"true",L"false");setValue(L"bool",bvalue);setValue(L"empty",L"");它已更改,以便在存储bool值时我们使用相同的字符串(字符串的内部数据存储)setValu

c++ - 使用 bool operator== 比较对象

所以,看了一些SO问答,还是不明白为什么要用friendbooloperator==(BaseClassconst&left,BaseClassconst&right)代替booloperator==(BaseClassconst&right)现在我有这样的东西http://pastebin.com/pKsTabC0(已修复)-它似乎工作正常。但也许我错过了什么?有什么建议吗?更新1好的,我更改了源以使其正常工作http://ideone.com/fIAmB.删除了不必要的virtual并添加了const。我仍然不明白为什么要使用friend... 最佳答案