草庐IT

render_template_string

全部标签

c++ - Windows 上的慢速 std::string 连接

我有一个程序需要将许多字符串连接在一起(更准确地说是将整数转换为字符串)。在我的Ubuntu机器上(运行g++7.3.0),代码运行时间为1.5秒。但是代码也需要在Windows上运行(使用MinGW运行g++6.3.0),需要15秒才能完成。此外,Ubuntu设置在使用i7-4712MQCPU@2.30GHz的慢得多的笔记本电脑上运行,而Windows机器在i7-7700KCPU@4.20GHz上运行。重现时间的代码如下所示。我用g++tester.cpp-O2-otester(或tester.exeforwindows)编译代码#include#includeintmain(int

c++ format cout with "right"and setw() for a string and float

我正在尝试格式化一个“cout”,它必须显示如下内容:Result$34.45金额($34.45)必须在右侧索引上,并带有一定数量的填充或在特定列位置结束。我尝试使用cout但是,它是为“$”字符串设置宽度,而不是为字符串加金额设置宽度。关于处理此类格式有什么建议吗? 最佳答案 您需要将"$"和值34.45组合成单独的字符串。像这样尝试:#include#include#include#includeusingnamespacestd;intmain(){stringstreamss;ss

c++ - Curiously Recurring Template Pattern (CRTP) 是正确的解决方案吗?

场景考虑一个Logger类,它有一个为标准C++类型重载的成员函数write(),还有一些方便的函数模板,比如writeLine()内部调用write():classLogger{public:voidwrite(intx){...}voidwrite(doublex){...}...templatevoidwriteLine(Tx){write(x);...}...};进一步考虑一个子类FooLogger,它为特定于域的类型添加了额外的write()重载(我们称其中两个为FooType1和FooType2):classFooLogger:publicLogger{public:usi

c++ - 错误 : use of deleted function for overloaded template

我正在尝试模板特化,但无法确定为什么charconst*const无法在下面解析(尽管是有效类型)的原因。templateBfoo(A)=delete;templatevoidfoo(char*){}templatevoidfoo(charconst*const){}intmain(){{//typesOKcharconst*consta=nullptr;char*b=nullptr;}char*data;foo(data);//OKfoo(data);//ERRORreturn0;}错误error:useofdeletedfunction‘Bfoo(A)[withA=constcha

C++初阶:初识STL、String类接口详细讲解(万字解析)

上次介绍完了模版和泛型编程:C++初阶:入门泛型编程(函数模板和类模板)今天开始stl的内容了文章目录1.STL介绍1.1概念(标准模板库)1.2版本问题(主流有4个)1.3STL六大组件2.string类的基本介绍3.string类对象的构造(构造函数)4.访问及遍历操作4.1operator[]([]加下标)4.2基于范围for4.3使用迭代器(最推荐使用)5.string的迭代器(Iterator)5.1介绍5.2begin()和end()(正向和常正向)5.3rbegin()和rend()(反向和常反向)6.string类对象的容量操作6.1size和length6.2capacity

c++ - "run time templates"

我很确定答案是“你不能使用模板,你必须使用虚函数(动态多态性)”,但如果我走那条路,我似乎必须复制很多代码.这是设置:我目前有两个类,ColorImageSegmentation和GrayscaleImageSegmentation。他们做的事情本质上是一样的,但是有3个区别-它们对不同类型(ColorImage和GrayscaleImage)进行操作-一个参数,直方图的维度(3vs1)不同-PixelDifference函数根据图像类型不同如果我创建一个类templateclassImageSegmentation{};我会保持良好的状态。但是,我想让这个对象成为另一个类的成员:cl

c++ - 以编程方式确定 std::string 是否使用写时复制 (COW) 机制

根据这个question的讨论,我想知道使用nativeC++的人如何以编程方式确定他们正在使用的std::string实现是否利用Copy-On-Write(COW)我有以下功能:#include#includeboolstdstring_supports_cow(){//makesurethestringislongerthanthesizeofpotential//implementationofsmall-string.std::strings1="012345678901234567890123456789""012345678901234567890123456789""0

c++ - 我应该在 ATL/WTL 中使用 CString、basic_string<TCHAR> 还是其他东西?

我这几天只学了一点ATL(在意识到纯Win32有多痛苦之后),也学了WTL和MFC,据我所见,有很多不同的字符串我可以上课。我曾经做过这样的事情:#include#includenamespacestd{typedefbasic_string_tstring;}然后在我的代码中到处使用_tstring。在学习了一些ATL之后,我了解到在atltmp.h中有一个CString类。显然,在WTL中还有另一个CString类,在MFC中还有一个CString类。我不知道是继续使用ATL还是转而使用WTL、MFC或其他软件。但是现在,我正在将我的Win32代码转换为ATL,我不确定要更改什么以

c++ - C strings vs const char* 让我感到困惑......请帮忙

我是一名C/C++初学者,试图构建一个看似非常简单的程序:它将文件加载到C字符串(constchar*)中。然而,尽管该程序非常简单,但它并没有按照我理解的方式工作。看一看:#include#includestd::stringloadStringFromFile(constchar*file){std::ifstreamshader_file(file,std::ifstream::in);std::stringstr((std::istreambuf_iterator(shader_file)),std::istreambuf_iterator());returnstr;}cons

c++ - 为什么 std::basic_string 不支持通过表达式模板进行连接?

Qt的QString可以通过operator%连接起来,它使用表达式模板预先计算结果字符串的大小并优化对operator+的多个链式调用.参见thisquestionofmine了解更多信息。为什么std::basic_string没有采用类似的结构?C++11甚至允许这样做吗?我只看到优点,很明显,库实现者可以在需要时破坏ABI兼容性(C++11甚至为libstdc++提供了一个很好的理由)。 最佳答案 因为没有人提出标准;除非有人提出建议,否则它不会进入。还因为它可能会破坏现有代码(如果他们使用operator+就是这样)。此外