草庐IT

bool2str

全部标签

c++ - 基于 bool 模板参数的启用方法

我想实现一个基于bool模板参数的私有(private)函数。类似的东西:#includeusingnamespacestd;templateclassAggregator{public:voidfun(inta){funInternal(a);}private:voidfunInternal(inta,typenamestd::enable_if::type*=0){std::cout::type*=0){std::couta1;Aggregatora2;a1.fun(5);a2.fun(5);return0;}但上面的程序无法编译:错误:'structstd::enable_if'

c++ - 当函数返回类型为 bool 时,为什么不能在 C++14 中返回共享指针?

我正在使用g++并编写一个简单的函数:#includestd::shared_ptrptr;boolfails_compiling(){returnptr;}从我在界面中看到的内容来看,shared_ptr实现包括一个bool运算符,我什至可以像这样应用快速修复:returnstatic_cast(ptr);现在可以编译了。为什么返回算法不像if()和while()那样尝试自动转换为bool? 最佳答案 如果你结账std::shared_ptr的bool转换运算符,您会看到它被声明为:explicitoperatorbool()co

c++ - 错别字:Linux 下 std::ifstream 中 bool 到 int 转换引起的错误

我有一个拼写错误(||而不是|)并注意到这样的代码在GCC中失败并在Visual中编译。我知道std::ifstream的第二个参数是一个int。所以理论上,bool必须隐式转换为int。那么为什么会失败呢?引发错误的示例(我只是使用了一些整数而不是标志)。#includeintmain(intargc,char*argv[]){std::ifstream("foo",2|3||4)} 最佳答案 std::ifstream'sconstructor将std::ios_base::openmode作为第二个参数这是typedef根据实

c++ - Valgrind 未显示使用不正确的 c_str() 的无效内存访问

想象一下这样的代码:stringf(){stringr="ab";returnr;}intmain(){constchar*c=f().c_str();printf("%s.\n",c);return0;}这段代码可能会崩溃,对吧?因为c指向的那个字符串被破坏了。但是通过Valgrind运行它不会显示任何无效的内存访问。为什么?我知道Valgrind无法检查堆栈,但“ab”实际上位于堆上,对吧? 最佳答案 Thiscodemaycrash,right?Becausethatstringthatcpointstoisdestroyed

c++ - 将 `nullptr` 分配给 `bool` 类型。哪个编译器是正确的?

我有以下代码片段,将nullptr分配给bool类型。#includeintmain(){boolb=nullptr;std::cout在clang3.8.0中工作正常。它给出了输出0。ClangDemo但是g++5.4.0报错:source_file.cpp:Infunction‘intmain()’:source_file.cpp:5:18:error:convertingto‘bool’from‘std::nullptr_t’requiresdirect-initialization[-fpermissive]boolb=nullptr;哪个编译器是正确的?

c++ - 对于多个 bool 运算,使用 && 是否比 || 更有效?

假设我们要计算(A||B||C)的bool值这在逻辑上等于!(!A&&!B&&!C)。使用!(!A&&!B&&!C)会不会比另一个if(!A)为false因为整个表达式值变为false更省时?程序会注意到吗?或者程序在返回最终结果之前还需要计算(!B)和(!C)的值?附言只需更正de'Morgan表达式并将~更改为!。谢谢大家。P.S.2显示在thislink中通过RetiredNinja和optimizedversion通过DavidFoerster.汇编代码其实是一样的! 最佳答案 (A||B||C)在逻辑上等于!(!A&&!B

.net通过S7.net读写西门子PLC中,字符串,bool,整数,小数及byte型

注:.net中通过TCP/IP方式通过S7.net.dll动态库,连接到西门子PLC,西门子程序中许勾选优化块,程序读取需要db块号+偏移量一。使用VS项目,在项目中添加S7.net动态库代码中引用S7.net动态库usingS7.Net;实例化PLC服务名//////实例化PLC///PlcS71500;连接PLC按钮时间编写:以上代码可测试是否能连接至PLC二.西门子中点位信息,在程序中地址表示说明在DB块中有如下变量//////实例化PLC///PlcS71500;//////连接PLC/////////privatevoidbutton1_Click(objectsender,Even

c++ - 当只有一个线程写入 c++ 中的 bool 变量时,是否可能出现竞争条件?

在下面的代码示例中,程序执行永远不会结束。它创建一个线程,该线程在终止之前等待全局bool设置为true。只有一位作者和一位读者。我相信允许循环继续运行的唯一情况是bool变量为false。bool变量怎么可能以与只有一个作者不一致的状态结束?#include#include#includebooldone=false;void*threadfunc1(void*){std::cout 最佳答案 从某种意义上说,threadfunc1()中的这条语句存在问题:while(!done);可以由编译器实现为:a_register=don

c++ - 在临时字符串上使用 string::c_str

这个问题在这里已经有了答案:C++destructionoftemporaryobjectinanexpression(4个答案)关闭8年前。关于临时对象何时被销毁,这是否有效:FILE*f=fopen(std::string("my_path").c_str(),"r");是否会在计算完fopen的第一个参数后或fopen调用后立即销毁临时对象。使用以下代码进行测试:#includeusingnamespacestd;structA{~A(){printf("~A\n");}constchar*c_str(){return"c_str";}};voidfoo(constchar*s)

c++ - GCC:禁止隐式 bool->int 转换

是否有任何gcc标志禁止隐式“bool->int”转换?我想通过这段代码得到任何警告:voidfunction(intvalue,boolflag){}intmain(){inta=123;boolflag=true;//oops,acommonmistakefunction(flag,a);} 最佳答案 作为解决方法,在C++11中,您可以删除其他可能的重载:templatevoidfunction(int,T)=delete; 关于c++-GCC:禁止隐式bool->int转换,我们