草庐IT

c++ - 我是否需要删除使用 new 和 placement 构造的对象

classFoo{//somememberpublic:intbar;}intmain(){char*buffer=newchar[100];Foo*f=new(buffer)Foo();//doihavetodeletef;//orisdelete[]buffer;//enough}当然,如果删除Foo对系统有一些重大影响,我必须删除它,但可以说它是一个简单的存储对象,我将其完全放在缓冲区内并且没有确实删除了一些其他东西的析构函数。我是否必须删除一个放置在新内部的对象是否足以删除缓冲区?如果我必须对缓冲区内的每个对象调用delete,为什么我必须这样做吗?我读到:what-uses-

c++ - 如何使用 libjpeg 从 std::istream 读取 JPEG?

libjpeg可以从FILE*或缓冲区中读取JPEG数据。我的数据来自std::istream。我可以将整个std::istream读入缓冲区以与libjpeg一起使用,但如果可能的话,我宁愿让libjpeg直接从std::istream中读取。如何做到这一点? 最佳答案 您只需要为您的istream提供包装器。定义一个结构体,例如structJpegStream{jpeg_source_mgrpub;std::istream*stream;bytebuffer[4096];}然后需要四种方法对流进行操作:voidinit_sour

c++ - 如何将 unsigned int 放入 char 数组并将其提取回来

有人可以解释为什么这不起作用吗?我正在尝试将一个unsignedint放入一个char缓冲区,然后将其取回另一个unsignedint。1#include2#include3intmain(){4unsignedinttester=320;5charbuffer[512];6memset(buffer,0,512);7memcpy(buffer,&tester,sizeof(unsignedint));8/*buffer[0]|=tester;9buffer[1]|=(tester>>8);10buffer[2]|=(tester>>16);11buffer[3]|=(tester>>

c++ - 哪些库必须与 Protocol Buffer 生成的 C++ 代码链接

我有来自mytest.proto文件的mytest.cc和mytest.h输出,但我找不到关于如何为此使用g++编译对象的任何引用。(.proto很好,因为我可以使用Python)g++mytest.cc-l????????要包含哪些库? 最佳答案 我想你可能需要链接到libprotobufg++mytest.cc-lprotobuf-omytest 关于c++-哪些库必须与ProtocolBuffer生成的C++代码链接,我们在StackOverflow上找到一个类似的问题:

c++ - 将时间(以秒为单位)从大纪元转换为一年中的某一天?

我有一个充满数据的文件,其中一列是从大纪元算起的秒数。作为引用,示例值如下所示:1498493536984926976我需要将其转换为一年中的某一天。到目前为止我所拥有的是这段代码,它使用thisreference将日期转换为正常的可读结构,然后strftime从结构中提取一年中的某一天:time_trawtime=stol(exploded_line[2]);std::cout但是,strftime行上的这段代码SegFaults!我不知道是什么原因造成的。我尝试将buffer初始化为charbuffer[80];和各种其他声明,但似乎没有任何效果。我也试过完全放弃缓冲区,只使用st

c++ - 对引用和指针的混淆

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:WhatarethedifferencesbetweenpointervariableandreferencevariableinC++?Whatarethedistinctionsbetweenthevarioussymbols(*,&,etc)combinedwithparameters?我在理解下面粘贴的示例代码时遇到了一些麻烦。具体来说,函数Buf&operator=(constBuf&);。据我了解,此函数需要返回类Buf的对象的地址。出现两个问题:将其声明为Buf*operator=(constB

c++ - 在 C++ 中一直读到文件末尾

我正在尝试读取一个电话簿应用程序的文件末尾,该应用程序正在从C转换为C++。当我打印文件的结果时,我得到了这个:johnnysmith(Home)3(Cell)4x☺>x☺>(Home)4(Cell)4它应该打印:johnnysmith(Home)3(Cell)4现在我正在使用while(!infile.eof())我读过的是一种糟糕的做法,但是当我使用infile.getline()我得到了名字和姓氏的重复,而且格式都被抬高了。无论如何(或另一种方法)是否有消除输入末尾的垃圾或另一种读取C++文件末尾的方法来修复此问题。我一直在阅读不同的解决方案,但很多网站似乎都同意的是fgets,

c++ - 提升 : read_until "\n" reads until ""

我正在开发一个使用boost::asio来处理以“\n”结尾的传入文本的tcp客户端。但是,当我发送包含空格的文本时,它会在第一个空格出现后丢弃所有字符。我已经确认我发送的文本是完整的。这是我的代码:boost::system::error_codeerror;boost::asio::streambufbuffer;boost::asio::read_until(*socket,buffer,"\n",error);std::istreamstr(&buffer);std::strings;str>>s; 最佳答案 使用std::

c++ - 无效指针 - 为什么?

对C++不是很有经验,我有以下几点:voidread_image(vector*buffer){buffer=newvector(2048);}intmain(intargc,char**argv){vector*buffer;read_image(buffer);deletebuffer;//givesinvalidpointeratrun-timereturn0;}这只是代码的相关部分,基本上我想在read_image()中初始化指针buffer。在运行时,我在尝试释放堆时得到这个:***glibcdetected***./main:free():invalidpointer:0x

c++ - 如何从另一个应用程序中获取选定的文本?

我试图在不使用剪贴板的情况下从另一个应用程序中获取选定的文本。我找到了从事件应用程序中获取HWND的方法,但是当我使用EM_GETSELTEXT时,它们在缓冲区中没有文本。char*shortcut::getSelectedText(){POINTmouse;if(GetCursorPos(&mouse)){HWNDwindow=WindowFromPoint(mouse);//gettheHWNDfromtheactiveapplicationif(window!=nullptr){char*buffer=newchar[100];SendMessage(window,EM_GETS