草庐IT

bool2str

全部标签

c++ - GLSL bool 值的大小是多少

我想使用一个bool类型的着色器变量,但我找不到它的大小。这很重要,因为在设置顶点属性指针时,我指定了可以是的数据类型GL_BYTE,GL_UNSIGNED_BYTE,GL_SHORT,GL_UNSIGNED_SHORT,GL_INT,GL_UNSIGNED_INT,GL_FLOAT,orGL_DOUBLE在C++中,通常bool应该与4字节int具有相同的大小,但我可以假设GLSL也是如此还是它只有1个字节? 最佳答案 ThismattersbecausewhensettingupvertexattributepointerIsp

c++ - 为什么 `bool b = 2` 工作正常但 `bool b = {2}` 会产生缩小转换的警告?

使用C++11中的{}初始化程序初始化boolb={2}会产生以下警告消息:warning:narrowingconversionof‘2’from‘int’to‘bool’inside{}[-Wnarrowing]但是,使用老式的boolb=2没有这个问题。这背后的原因是什么?更新:我使用g++-std=c++11编译代码,它给了我警告。如果我添加选项-pedantic-errors,则警告变为错误。 最佳答案 缩小初始化列表中的数据类型会使您的C++11程序格式错误,在这种情况下,编译器可以发出警告或继续运行。有趣的是,您实际上

c++ - bool类型的变量是如何存储在内存中的? (C++)

boolean测试;sizeof(test)=1如果使用VS2010。由于每个C++数据类型都必须是可寻址的,“测试”boolean变量是8位(1字节)。我的问题是“test”变量真的占用内存中的1个字节吗?有没有什么实现技巧可以让bool数据类型只占一点?如果是,你能举个例子吗?booltest1[32](在VS2010中),inttest2(在VS2010中)test1和test2是否占用相同的内存? 最佳答案 test1的每个元素必须是可寻址的。这意味着数组test1(使用booltest1[32]创建的)至少需要32个字节(

c++ - make 失败,返回错误 "cannot convert ‘std::istream {aka std::basic_istream<char>}’ 到 ‘bool’”

我正在尝试从源代码编译libgtextutils(fastxtoolkit需要)。“./configure”命令运行良好,但随后的“make”命令产生了一个我无法解决的错误。text_line_reader.cpp:Inmemberfunction‘boolTextLineReader::next_line()’:text_line_reader.cpp:47:9:error:cannotconvert‘std::istream{akastd::basic_istream}’to‘bool’inreturnreturninput_stream;^~~~~~~~~~~~make[3]:*

c++ - C++ 中是否有等效的 str_replace?

在PHP中,有一个str_replace基本上执行查找和替换的功能。在C++中是否有此函数的等效项? 最佳答案 不完全是,但看看BoostStringAlgorithmsLibrary-在本例中为replacefunctions:std::stringstr("aabbaadd");boost::algorithm::replace_all(str,"aa","xx");str现在包含"xxbbxxdd"。 关于c++-C++中是否有等效的str_replace?,我们在StackOve

c++ - 为什么我不能对 std::ofstream 使用 operator bool()

为什么我不能写下面的代码?#include#includebooltouch(conststd::string&file_path){returnstd::ofstream(file_path,std::ios_base::app);}intmain(){touch("foo.txt");}输出prog.cpp:Infunction'booltouch(conststring&)':prog.cpp:6:52:error:cannotconvert'std::ofstream{akastd::basic_ofstream}'to'bool'inreturnreturnstd::ofst

c++ - 有没有办法避免无意中将非 bool 参数传递给 bool 参数?

我今天遇到了一个C++类型安全问题,我想知道是否有一种好方法可以让编译器在编译时检测到这个问题。考虑这个示例代码:classBar{public:voidFoo(boolarg1=false,intarg2=10,intarg3=20){[...]}};intmain(intargc,char**argv){intx=40,y=50;Barb;b.Foo();//correctusageb.Foo(true,x,y);//correctusageb.Foo(x,y);//problem:compilesbutwon'tdowhatthecallerexpects}如对b.Foo()的最

c++ - 在访问 vector<bool> 中的元素地址时获取临时地址

我仅在访问boolvector中的元素地址时收到警告。对于int等其他数据类型的vector,我不会收到任何警告。例如vectorboolVect;boolVect.push_back(false);if(boolVect.size()>0){cout我在声明“cout有人可以澄清一下吗? 最佳答案 std::vector坏了(参见例如http://www.informit.com/guides/content.aspx?g=cplusplus&seqNum=98或Alternativetovector)。它是std::vector

c++ - 通过 bool 进行的 char 往返转换会发生什么情况?

关于将char转换为bool然后再次转换回char,C++语言定义promise什么?charoriginal=255;boolnext=original;charfinal=next;此外,在这种情况下,除了语言保证的内容之外,大多数编译器会做什么? 最佳答案 这将给出零值或一值,具体取决于原始值是零还是非零。转换为bool给出true或false的值:4.12Azerovalue,nullpointervalue,ornullmemberpointervalueisconvertedtofalse;anyothervalueis

c++ - 为什么要在函数中使用 c_str()

这个问题在这里已经有了答案:Whydon'tthestd::fstreamclassestakeastd::string?(10个答案)关闭8年前。我正在阅读《C++Primer》一书及其使用的文件输入输出章节:ifstreaminfile(ifile.c_str());打开名称在字符串ifile中的文件。我尝试了代码,即使没有c_str()也能完美运行。那么使用它有什么意义呢?当我尝试从命令行参数打开文件时,我应该使用c_str()吗?我的意思是正确的用法:ifstreamfin(argv[1])或ifstreamfin(argv[1].c_str())