草庐IT

string_with_shortcodes

全部标签

c++ - 为什么 Microsoft 的 std::string 实现需要堆栈上的 40 个字节?

最近看了thisvideo关于facebook的string实现,我很想看看Microsoft实现的内部结构。不幸的是,字符串文件(在%VisualStudioDirectory%/VC/include中)似乎不包含实际定义,而只是包含转换函数(例如atoi)和一些运算符重载。我决定从用户级程序中对它进行一些探索和研究。当然,我做的第一件事就是测试sizeof(std::string)。令我惊讶的是,std::string需要40个字节!(无论如何在64位机器上。)前面提到的视频详细介绍了facebook的实现如何只需要24个字节而gcc的实现需要32个字节,所以这至少可以说是令人震惊

c++ - std::string_view 在传递给另一个采用 std::string 的函数时的优点

我有以下辅助函数,它接受一个字符串View并在unordered_map中返回一个查找:intScanner::getOpCount(std::string_viewop){autoitr=Parser::opTable.find(op);}//inanotherfile:conststaticstd::unordered_mapopTable;这不会编译,因为find需要一个字符串参数,所以我找到的唯一解决方案(如果我错了请纠正我)是将op包装为字符串{操作}。然而,让我担心的是std::string_view是为了简化字符串传递,但是如果我必须从它构造一个字符串而不考虑函数体,那么

c++ - 嵌入式应用程序从 std::string 切换到 std::wstring?

到目前为止,我一直在我的嵌入式系统(路由器、交换机、电信设备等)的C++应用程序中使用std::string。对于下一个项目,我正在考虑从std::string切换到std::wstring以获得Unicode支持。例如,这将允许最终用户在命令行界面(CLI)中使用中文字符。我应该期待什么并发症/头痛/惊喜?例如,如果我使用仍然使用std::string的第三方库怎么办?由于对国际字符串的支持对我所从事的嵌入式系统类型的要求并不是那么强烈,所以我只会在不会引起严重问题的情况下才这样做。 最佳答案 请注意,许多通信协议(protoco

c++ - std::string == 运算符不工作

多年来,我一直在Windows和Linux上使用std::string的==运算符。现在我正在linux上编译我的一个库,它大量使用==。在linux上,以下函数失败,因为即使字符串相等(区分大小写,相等)==也返回falseconstData*DataBase::getDataByName(conststd::string&name)const{for(unsignedinti=0;igetName()==name){returnm_dataList.get(i);}}returnNULL;}getName()方法声明如下virtualconststd::string&getName

论文解读——《Continuous curvature planning with obstacle avoidance capabilities in urban scenarios》

Continuouscurvatureplanningwithobstacleavoidancecapabilitiesinurbanscenarios参考资料来源:《Continuouscurvatureplanningwithobstacleavoidancecapabilitiesinurbanscenarios》一文注:本文章依旧采用按照论文原文顺序进行介绍,大家在读这篇paper的时候请学习一下bezier曲线相关理论A.Intelligentintersectionhandling核心思想:通过改变控制点的位置,可以生成多条不同的bezier曲线,最后根据一些准则选择出最好的bez

c++ - 如何定义和使用 boost::function with "optional arguments"?

我正在使用一个需要某种回调方法的类,所以我正在使用boost::function来存储函数指针。我需要回调有一个可选参数,但我发现boost::function不允许我定义可选参数类型,所以我尝试了以下代码并成功了..//thesecondargumentisoptionaltypedefboost::functionmyHandler;classA{public://handlerwith2argumentsintfoo(intx,char*a){printf("%s\n",a);return0;};//handlerwith1argumentintboo(intx){return1

iphone - 包含 <string> 时 <cstdio> 出错

_gnu_cxx::snprintfhasnotbeendeclared当我在我的cpp中包含字符串时。此错误位于此行:using::__gnu_cxx::snprintf;cstdio包含在这个顺序中:/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/usr/include/c++/4.2.1/string:47,/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/usr/include/c++/4.2.1/

C++ 从可变长度参数列表中提取 std::string

大家好!我正在尝试制作一个返回格式化字符串的sprintf的简单拷贝,但我遇到了一个小问题......显然,使用可变长度参数列表您不能传递std::string实例。我已经让解析器正确处理int、double、float、char、constchar*、char*...我还没有让字符串工作。:\如果您想知道,这是我得到的编译错误:/root/learncpp/StringFormat/main.cpp:8:warning:cannotpassobjectsofnon-PODtype'structstd::string'通过'...';调用将在运行时中止我这样做的主要原因是我可以方便地格

c++ - 在 boost 中,如何将 boost 迭代器传递给以某种方式转换为 std::string 的函数

请在以下代码末尾将特定问题作为注释查看。std::strings("mysamplestring\"withquotes\"");boost::escaped_list_separatorels("","","\"\'");boost::tokenizer>::iteratoritr;boost::tokenizer>tok(s,els);itr=tok.begin();if(itr!=tok.end())fn_that_receives_pointer_to_std_string(itr);// 最佳答案 boost::token

c++ - "std::map with mutexes"与 "libcds maps (Michael Hashmap and Split Order List)"并行插入、查找、删除之间是否有任何速度测试?

所以我真的很想看到一些并行的速度测试(比如从100到10000个并行线程),其中每个线程至少在3种类型的并发映射上插入、查找、删除-std::map(有一些互斥锁)与libcds(ConcurrentDataStructures)...例如,如果这样的比较尚不存在,请帮助我创建一个。直接相关:LibCds:MichaelHashmapandSplitOrderList假设我们有#include#include#includeclassTestDs{public:virtualboolcontainsKey(intkey)=0;virtualintget(intkey)=0;virtua