草庐IT

C++标准

全部标签

c++ - 标准窗口打开/保存对话框被 WebKit 破坏

我们的团队正在使用Qt4.7.4开发一个复杂的应用程序。我们提供的关键功能之一需要由QWebBrowser呈现的HTML+JS内容。问题是加载某些页面会导致打开/保存对话框损坏:对话框在交互方面仍然“有效”:可以打开文件过滤器组合框,可以输入文件名,但所有这些都画错了。根本不绘制文件列表和目录树。我在Qtbugtracker和google上没有发现关于这个问题的错误报告。我们认为问题是我们项目的本地问题。我们假设一些comctl32.dll内部结构被某人对无效地址的写操作破坏了,但我们不知道如何捕获真正的原因。另外值得一提的是,这个问题不会出现在Qt5.4和低于8.0的任何版本的Win

c++ - protected 变量命名和标准

我遇到了这个post引入可迭代队列的地方。OP在实现中使用了std::queue中名为c的protected变量。这完全有效吗?这个变量在所有实现中是否都具有相同的名称?换句话说,标准是否明确规定这个变量必须命名为c? 最佳答案 作为引用,列出了std::queue的确切定义here.所以在回答Inotherwords,doesthestandardstateclearlythatthisvariablemustbenamedc?是的,就是这种情况(其他容器适配器也类似);template>classqueue{protected:

c++ - 随着 std::byte 的标准化,我们什么时候使用 void* 什么时候使用 byte*?

C++17将包含std::byte,一种用于一个原子可寻址内存单元的类型,在典型计算机上具有8位。在此标准化之前,在指向“原始”内存时已经存在一些困境-在一方面使用char*/unsignedchar*还是使用void*在另一边。现在,首选void*的原因之一已被删除-std::byte与char没有相同的含义;这是关于原始内存,而不是字符。所以,我的问题是:对于std::byte的时代,关于什么时候更喜欢它而不是void*以及什么时候有什么好的经验法则是不是反过来了?当然,当您处理旧代码或C代码时,您会受到它所接受内容的限制;我主要指的是新代码,您可以在其中选择所有类型。

c++ - 返回带有 bool 结果标志的值的标准模板

当我开始利用C++17结构化绑定(bind)和ifoperatorinit语句来进行更优雅的函数结果报告和检查时,如果符合C++核心指南F21,我开始执行以下操作:std::pairFoo(){return{true,42};//truemeansthatfunctioncompletewithnoerrorandthat42isagoodvalue}voidmain(void){if(auto[Result,Value]=Foo();Result){//Dosomethingwiththereturnvaluehere}}然后,当然,我认为为此类返回类型提供一个可重用的模板会很好,这

c++ - 为什么我应该在 c++ 而不是 c 中设置插件接口(interface)

由于我的previousquestions我问自己:为插件系统设置C++接口(interface)是否有用?以下几点反对它:不同编译器及其版本之间没有共同的ABI,内存中的对象没有共同的布局没有直接类导出。您必须导出工厂和析构函数。如果你的对象被其他对象持有,问题就会出现delete它们,例如智能指针。STL的不同实现,你不能传递std::list到插件使用不同版本的库,例如Boost如果您将自己限制在C++语言的其余部分,您几乎会以“C子集”告终。使用C++有什么要点吗?Qt-Toolkit是如何解决上述问题的?备注:我主要指的是Linux系统。不过,我对其他平台上的解决方案很感兴趣

c++ - LibTIFF:从 TIFF 图像中提取所有标签

我目前正在开展一个项目,该项目要求我将一个TIFF图像拆分为一个包含所有标签的文件和一个包含所有图像数据的文件,并从这些文件重建一个TIFF图像。唯一的问题是LibTIFF似乎没有提供从图像中​​获取所有标签的简单方法。我试过使用TIFFGetTagListCount然后使用TIFFGetField来检索标签,但这只返回标签的一小部分。我已经开始推出我自己的版本,但我只是想仔细检查并确保我没有忽略某些东西,因为这似乎是一个非常明显的功能,应该包含在库中。 最佳答案 这是扫描所有标签可以获得的关闭数:#include"LibTIFF/

c++ - 使用脚本在编译时生成代码

理想情况下,我希望能够将(非常重复的)C/C++代码添加到我的实际代码中,但在编译时,代码将来自python脚本的标准输出,就像使用宏。例如,假设我想要拥有依赖于给定类的公共(public)属性的函数,能够在我的C++代码中编写以下内容将是一件幸事:generate_boring_functions(FooBarClass,"FooBarClass.cpp")使用传统方法是否可行?还是我必须破解Makefile和临时源文件?谢谢。 最佳答案 您很可能需要稍微调整一下Makefile。编写一个(Python)脚本来读取每个源文件作为额

c++ - 是否有类似于 QByteArray 的标准 C++ 类?

是否有像QByteArray那样工作的STLC++类?? 最佳答案 std::string或std::vector 关于c++-是否有类似于QByteArray的标准C++类?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3136651/

c++ - 在 freopen() 之后从标准输入获取输入

你好,我想知道在我调用之后我们如何再次从stdin获取输入:freopen("Smefile.txt","r",stdin);准确地说,我希望我的程序的第一个部分应该从指定的文件中获取输入,下一部分将从标准输入中获取。喜欢:inta,b;freopen("Smefile.txt","r",stdin);scanf("%d",&a);{//someblockheresuchthatthenextcin/scanftakesbfromstandardinput}cin>>b;cout有什么想法吗? 最佳答案 你不能。使用FILE*inp

c++ - c/c++ 中类型的大小

我最近问了一个问题here关于char的大小。看着我的问题,这让我想到了另一个问题:char或sizeof(int)中的位数是CPU相关的、操作系统相关的、编译器相关的,还是上述的某种组合?谁决定我的编译器中的sizeof(int)是4?编辑:让我解释一下:例如,我在64位系统上的编译器使用32位int。这是由编译器或操作系统设置为这个(确切的)操作系统/平台组合上所有编译器的标准int吗?char=8位怎么样?操作系统可以决定它要使用16位字符吗?编译器可以吗? 最佳答案 根据所有ISOC标准,所有尺寸均以char尺寸的倍数测量.