草庐IT

STL-string

全部标签

c++ - std::string 的引用计数

我正在查看basic_string的代码(与g++4.2.1捆绑在一起)。复制构造函数使用grab()函数来“抓取”字符串的拷贝(增加其引用计数):_CharT*_M_grab(const_Alloc&__alloc1,const_Alloc&__alloc2){return(!_M_is_leaked()&&__alloc1==__alloc2)?_M_refcopy():_M_clone(__alloc1);}只有当两个字符串的分配器相同时,这才会增加引用计数——这是有道理的。但是,复制构造函数是:basic_string(constbasic_string&__str):_M_d

c++ - STL 和 UTF-8 文件输入/输出。怎么做?

我将wchar_t用于内部字符串,将UTF-8用于存储在文件中。我需要使用STL将文本输入/输出到屏幕,还需要使用完整的立陶宛字符集。这一切都很好,因为我没有被迫对文件做同样的事情,所以下面的例子很好地完成了工作:#include#include#include_setmode(_fileno(stdout),_O_U16TEXT);wcout但我很好奇,并试图对文件做同样的事情,但没有成功。当然,我可以使用格式化的输入/输出,但那是……气馁。FILE*fp;_wfopen_s(&fp,L"utf-8_out_test.txt",L"w");_setmode(_fileno(fp),_

c++ - STL Vectors 和 new 运算符

这个问题应该很简单,也许很愚蠢,但我就是找不到问题。基本上,我必须解析一些自然语言的句子。我需要实现一个简单的算法来操纵“block”。一个Block由2个Pseudosentences组成,Pseudosentences由20个单词(字符串)组成。代码如下:typedefvectorPseudosentence;#defineW20//APseudosentenceismadeofWwords#defineK2//AblockismadeofKPseudosentencesclassBlock{public:vectorp;multimapScoremap;Block(){p.res

c++ - 如何*正确*地将 std::string 转换为无符号 char[] 数组。我想我做错了,有人指出我正确的方向吗?

我目前正在对网络协议(protocol)进行逆向工程,并且我编写了一个小型解密协议(protocol)。我曾经将数据包的字节定义为一个无符号字符数组,如下所示:unsignedcharbuff[]="\x00\xFF\x0A"etc.为了不对每个数据包多次重新编译程序,我制作了一个小型GUI工具,它可以从字符串中获取\xFF表示法中的字节。我通过以下方式做到了这一点:intlength=int(stencString.length());unsignedchar*buff=newunsignedchar[length+1];memcpy(buff,stencString.c_str()

c++ - 常规 "string"类与 "rwcstring"类之间的区别

谁能告诉我常规string类和roguewave的rwcstring类之间的确切区别。我的项目中的代码大量使用了rwcstring类。我的疑问是,如果两者都处理和操纵字符串,那么两者之间的确切区别是什么。还有为什么rwcstring类被认为比常规string类更有效? 最佳答案 RogueWave的RWCString使用一种称为惰性复制的技术来提高其性能。基本上,这意味着复制一个字符串(通过复制构造函数或复制赋值运算符)实际上并没有复制字符串的内容,而只是保留了一个指向原始字符串内容的指针。复制只有在真正需要的时候才进行(通常是因为

c++ - 黑莓 10 : GNU STL

我正在尝试使用MomenticsIDE2.0版创建一个BB10级联项目,我需要该项目使用GNU标准库而不是Dinkumware(因为我有使用arm-unknown-nto-qnx8编译的外部库。0.0eabi-g++仅支持gnustd)。在IDE中,我已将ProjectProperties->C/C++Build/Settings/Runtime更改为“C++GNUwithexceptions”。但是,当我运行一个带有我创建的静态库(.a文件)的简单项目时(只有一个头文件包含构造函数、std::string对象、setter和getter(用于对象)和相应的cpp文件),我在执行此操作

c++ - 如果将某个符号的名称用作 STL 容器的元素,为什么我不能隐藏它?

根据answer,我通过使用标志-fvisibility=hidden和构建工具链中的命令strip隐藏了共享库的大部分内部符号。但我发现一些用作标准C++容器元素的符号无法隐藏。例如,/*example1.cpp*/#include#defineMY_EXPORTS__attribute__((visibility("default")))extern"C"{MY_EXPORTSvoid*create();MY_EXPORTSvoiddosth(void*,inti);MY_EXPORTSvoidrelease(void*);}classPoint{public:intx;inty;

c++ - 无法在 CGAL 中创建 AABB 树类型的 STL 容器

我正在尝试创建类型为map>的STL映射(AABBtree's的map)当我尝试为map分配一个值时,例如(此代码仅用于演示目的)://CGALincludesbegin#include#include#include#include#include#include//CGALincludesend/**CGALtypedef'sforinitialization*/typedefCGAL::Simple_cartesianK;typedefK::FTFT;typedefK::Point_3Point_3;typedefK::Segment_3Segment;typedefCGAL::

Python f-strings - PEP 498 - 字面字符串插值

Pythonf-strings或格式化字符串是格式化字符串的新方法。此功能是在Python3.6中引入的,属于PEP-498。它也被称为字面字符串插值。我们为什么需要f-strings?Python提供了各种格式化字符串的方式。让我们快速看一下它们以及它们存在的问题。%格式化-适用于简单的格式化,但对于字符串、整数、浮点数的支持有限。我们无法将其用于对象。模板字符串-它非常基础。模板字符串只能使用类似字典的关键字参数。我们不允许调用任何函数,参数必须是字符串。字符串format()-Python字符串format()函数是为了克服%-格式化和模板字符串的问题和有限功能而引入的。然而,它太啰嗦了

c++ - 将 STL 容器与包含其自身 key 的类一起使用

我有一个对象,可以通过它的名字来识别,我想把它放在在其中一个STL容器中。classMyClass{public://gettersandsetters,otherfunctionsprivate:std::stringname;//othermembervariables};所以起初我认为类map结构的使用与我的情况无关,因为在那些结构中,标识符(键)与类本身。使用映射,我必须返回名称变量并将其复制到类“外部”(浪费内存且不合逻辑,违反了OOP规则)。我的下一个目标是使用类似集合的结构。在这种情况下,我只有关键字段,我在其中加载整个对象。使用此方法,我必须重载我的和==运算符才能将对