草庐IT

c++ - 当我在 C++ 中将临时 int 分配给 const 引用时会发生什么?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Doesaconstreferenceprolongthelifeofatemporary?假设我有一个函数f:intf(intx){returnx;}constint&a=f(1);我知道f(1)只是一个临时的,我会在这条语句之后被销毁,但是将引用设为const会使f(1)的生命周期更长吗?如果是,f(1)将存储在哪里?这是否意味着x在超出范围时也没有被销毁?f(1)和x有什么区别?

c++ - std::string::c_str() 如何返回不会导致内存泄漏或未定义的 c 字符串内容的 c 字符串?

我正在为家庭作业编写一个类似于std::string的字符串类,但我无法弄清楚如何返回一个不会导致内存泄漏并保证保持不变的c字符串,直到它不再使用。我目前有:constchar*string::c_str(){charc[_size+1];strncpy(c,_data,_size);c[_size]='\0';returnc;}但是内容在调用后不久就被覆盖了。如果我进行动态分配,我要么会发生内存泄漏,要么在任何时候给定字符串中只能存在一个c字符串。我怎样才能避免这种情况? 最佳答案 但是c_str指向的字符串只有在std::str

c++ - 为什么非 const、非 int/enum 静态数据成员必须在定义之外初始化?

我知道只有静态、常量和int/枚举(c++11之前)的数据成员才能在类声明中初始化。“所有其他静态数据成员必须在全局命名空间范围内定义(即在类定义的主体之外)并且只能在这些定义中初始化”。为什么不能在类定义中初始化其他静态数据成员?是否有具体原因禁止这样做?如果数据成员特定于类,为什么它们在全局命名空间范围内声明,而不是在与其类相关的某些范围内声明? 最佳答案 Whycan'totherstaticdatamembersbeinitializedintheclassdefinition?Wasthereaspecificreason

c++ - 检查 int 或 list<int>

谁能告诉我完成此任务的最佳方法。比如说,我有一个模板函数,比如templatevoidget_result(ARGUMENT&ag){//argcanbeasingleobjectofaparticularobjectorlistofobjectsofthatparticularclass.//rest}有没有一种方法可以检查&ag是单个对象还是对象列表。此外,使用给定的模板界面。如果答案是通过类接口(interface)以某种方式通过模板规范来回答的,那无关紧要。唯一的问题是我不想指定对象类型或列表类型。例。ag=int或ag=listCB 最佳答案

c++ - 无法将字符/字符串转换为 int

当我运行我的代码时,我在编译时遇到了这个错误:#g++-std=c++0xsixteen.cpp-O3-Wall-g3-osixteensixteen.cpp:Infunction‘intmain()’:sixteen.cpp:10:error:callofoverloaded‘stoi(char&)’isambiguous/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/basic_string.h:2565:note:candidatesare:intstd::stoi(constst

c++ - 为什么语句 “vector<int>(v1);”会失败

Avector(v1)expression产生一个临时对象,可以放在operator=的右侧,但如果我们使用vector(v1)表达式作为语句,它将在VisualStudio201010.0.30319.1RTMRel中失败。详细的错误信息在下面代码的注释中。为什么会这样?vectorv1;v1.push_back(10);v1.push_back(20);v1.push_back(30);vectorv3=vector(v1);//OK,deliberatelycodelikethis.vector(v1);//errorC2086:“std::vectorv1”:redefinit

c++ - 在 C++ 中将字节数组转换为 int

以下是从字节数组中获取int16(短)值的最有效方法吗?inline__int16*ReadINT16(unsignedchar*ByteArray,__int32Offset){return(__int16*)&ByteArray[Offset];};如果字节数组包含与机器相同的字节序格式的字节转储,则调用此代码。欢迎使用替代方案。 最佳答案 这取决于您所说的“高效”是什么意思,但请注意,在某些体系结构中,如果Offset为奇数,此方法将失败,因为生成的16位int将未对齐,您将得到一个当您随后尝试访问它时出现异常。仅当您可以保证

C++ 错误 : expected primary-expression before ‘int’

这部分代码中的每个整数都出现此错误;if(choice==2){inssort(int*a,intnumLines);}if(choice==3){bubblesort(int*a,intnumLines);}if(choice==4){mergesort(int*a,intnumLines);}if(choice==5){radixsort(int*a,intnumLines);}if(choice==6){return0;}那是我在main中调用函数的地方。如果您想知道我正在编写一个小程序,让用户可以在4种不同类型的排序算法之间对列表进行选择。如有任何帮助,我们将不胜感激。

子过程“ TypeError:需要字节状的对象,而不是'str'”

我正在使用此代码几年前先前问的问题但是,我相信这已经过时了。尝试运行代码,我收到上面的错误。我仍然是Python的新手,因此我无法从类似问题中获得太多澄清。有人知道为什么会发生这种情况吗?importsubprocessdefgetLength(filename):result=subprocess.Popen(["ffprobe",filename],stdout=subprocess.PIPE,stderr=subprocess.STDOUT)return[xforxinresult.stdout.readlines()if"Duration"inx]print(getLength('be

c++ - 流内容与返回字符串 `str()` 的区别?

我正在使用asmallpieceofcode生成我在互联网上找到的PDF文件,并尝试(温和地)优化它,因为创建文件需要很长时间。分析后,我将其缩小为以下代码:std::ostringstreamtmp;tmp发现在一个紧密的循环中,out是一个ostringstream,它在写入文件之前基本上包含整个PDF内容。我发现tmp.str()是该循环中花费最多时间的行,并且在查找C++引用时看到str()会返回一个拷贝流的基础字符串。然后,我认为删除该拷贝并直接使用out会更快。所以我转储了tmp并直接做了:out但是现在,生成的PDF文件被认为是“损坏的”,无法用PDF阅读器打开,而以前的