草庐IT

bool2str

全部标签

c++ - 从函数返回 'c_str'

这是我在网上找到的一个小型图书馆:constchar*GetHandStateBrief(constPostFlopState*state){staticstd::ostringstreamout;//...restofthefunction...returnout.str().c_str()}在我的代码中我这样做:constchar*d=GetHandStateBrief(&post);std::cout现在,起初d包含垃圾。然后我意识到我从函数中获取的C字符串在函数返回时被销毁,因为std::ostringstream是在堆栈上分配的。所以我补充说:returnstrdup(out

c++ - 为什么 vector<int> 在以下情况下比 vector<bool> 快

这个现象是我在LeetCode题目N-Queens编程时发现的.我有两个版本的可接受代码,唯一的区别是我存储哈希表的方式,一个是使用vector另一个正在使用vector.具体来说,两个版本的代码如下:版本1,vector,运行时间:4毫秒classSolution{public:voiddfs(vector&crtrst,vector>&finalrsts,introw,vector&mup,vector&m45dgr,vector&m135dgr){intn=crtrst.size();if(row==n){finalrsts.push_back(crtrst);return;}f

c++ - 使用 cout (C++) 打印未初始化的 bool 值

我有一个带有bool数据成员的类,它没有被构造函数初始化。如果我这样做cout其中x是此类的对象,其中bool尚未初始化,我有时会得到一个随机数而不是0或1。(我是使用gcc。)此行为是否符合标准? 最佳答案 Isthisbehaviorcompliantwiththestandard?是的!在您的代码中使用垃圾值(未初始化)会调用未定义的行为 关于c++-使用cout(C++)打印未初始化的bool值,我们在StackOverflow上找到一个类似的问题:

C++:仅在未设置时设置 bool 值

我的C++应用程序中有通常执行此操作的代码:boolmyFlag=false;while(/*somefiniteconditionunrelatedtomyFlag*/){if(...){//statements,unrelatedtomyFlag}else{//setmyFlagtotrue,perhapsonlyifitwasfalsebefore?}}if(myFlag){//Dosomething...}我的问题与代码的else语句有关。基本上,我的循环可能会根据未满足的特定条件将myFlag的值从false设置为true。永远不会将标志从true设置为false。我想知道哪

c++ - 调用空字符串的 c_str

这个代码片段是正确的还是会导致未定义的行为?std::strings;assert(strlen(s.c_str())==0);如果不是undefinedbehavior,上面的断言会通过吗? 最佳答案 这是完美定义的,断言通过了。c_str()函数将始终返回有效的以零结尾的C字符串。通常会使用empty()来测试空字符串。 关于c++-调用空字符串的c_str,我们在StackOverflow上找到一个类似的问题: https://stackoverflow

C++11 Lambda 函数隐式转换为 bool 与 std::function

考虑这个简单的示例代码:#include#includevoidf(bool_switch){std::cout_f){std::cout编译失败:$g++--std=c++11main.cppmain.cpp:Infunction‘intmain(int,char**)’:main.cpp:15:33:error:callofoverloaded‘f(main(int,char**)::)’isambiguousmain.cpp:15:33:note:candidatesare:main.cpp:6:6:note:voidf(bool)main.cpp:10:6:note:voidf

c++ - 书中的示例无法编译,将 ifstream 转换为 bool

我是C++的学生。我正在阅读“从C++早期对象开始(第9版)”一书。第6章(关于函数)中的示例27从文件中读取数据但不会编译。这是完整代码://Program6-27#include#include#include#includeusingnamespacestd;//FunctionprototypeboolreadData(ifstream&someFile,string&city,double&rain);intmain(){ifstreaminputFile;stringcity;doubleinchesOfRain;//Displaytableheadingscout>cit

c++ - 错误 : invalid initialization of non-const reference of type ‘bool&’ from an rvalue of type ‘std::vector<bool>::reference {aka std::_Bit_reference}’

为什么我会收到错误:从类型为“std::vector::reference{akastd::_Bit_reference}”的右值对类型为“bool&”的非常量引用进行无效初始化?vector>vis;bool&visited(intx,inty){returnvis[x][y];//error}据我所知,vector中的operator[]返回引用,所以它应该是一个左值,但它不起作用。我应该怎么做才能让它发挥作用? 最佳答案 那是因为std::vector不是它看起来的样子。std::vector有一个特化与类型bool-它是空间

c++ - 如何使用 std::map 将 bool 映射到 3d 点结构?

如何使用以下结构:structpoint{intx;inty;intz;};作为std::map的键?我应该如何定义operator两分? 最佳答案 std::map等标准库容器要求您的排序是“严格弱排序”,因此在设计时必须非常小心。3元元组的典型方法如下所示:booloperator它就像一个只针对x的比较器,但不同之处在于,如果两个x相同,您就会通过比较ys。如果它们相同,那么您同样会陷入z比较。 关于c++-如何使用std::map将bool映射到3d点结构?,我们在StackOv

c++ - 为什么C/C++会自动将char/wchar_t/short/bool/enum类型转换为int?

因此,如果我理解得很好,积分提升提供了:char、wchar_t、bool、enum、short类型总是转换为int(或无符号整数)。然后,如果表达式中有不同的类型,将应用进一步的转换。我理解得很好吗?如果是,那么我的问题是:它为什么好?为什么?不要成为不必要的char/wchar_t/bool/enum/short吗?我的意思是例如:charc1;charc2;c1=c2;正如我之前所描述的,char总是被转换为int,所以在这种情况下,在自动转换之后它看起来像这样:intc1;intc2;c1=c2;但我不明白为什么这样好,如果我知道char类型就足以满足我的需要的话。