jjzjj

stdstring

全部标签

c++ - 将 boost::array<char> 复制到 std::string

我正在尝试cvopyboost::array至std::string.boost::array_buffer;std::stringdata;std::copy(_buffer.begin(),_buffer.begin()+bytes_transferred,data.begin());这是行不通的。所以我稍微改变了一下。char_buffer[1024];std::stringdata;std::copy(_buffer,_buffer+bytes_transferred,data.begin());第二个也不起作用。 最佳答案

C++11 字符串开头的不区分大小写的比较(unicode)

我必须检查特定字符串是否以另一个字符串开头。字符串使用utf8编码,并且比较应该不区分大小写。我知道这与那个话题很相似CaseinsensitivestringcomparisoninC++但我不想使用boost库,我更喜欢可移植的解决方案(如果它“几乎”不可能,我更喜欢面向Linux的解决方案)。是否可以在C++11中使用它的正则表达式库?或者只是使用简单的字符串比较方法? 最佳答案 我所知道的唯一方法是UTF8/国际化/文化感知是优秀且维护良好的IBMICU:InternationalComponentsforUnicode.它

c++ - 按值、引用和右值传递字符串

我只是比较将字符串传递给函数的性能。benchmarkresults很有趣。这是我的代码:voidadd(std::stringmsg){msg+="world";}voidaddRvalue(std::string&&msg){msg+="world";}voidaddRef(std::string&msg){msg+="world";}voidStringCreation(){add(std::string("hello"));}voidStringCopy(){std::stringmsg("hello");add(msg);}voidStringMove(){std::stri

c++ - 在 C++ 中使用 s 后缀的任何优势

这个问题在这里已经有了答案:Advantagesofusinguser-definedliteralforstringsinsteadofstringliteral(4个答案)关闭4年前。我的问题与C++中“s”后缀的使用有关?使用“s”后缀的代码示例:autohello="Hello!"s;//astd::string同样可以写成:autohello=std::string{"Hello!"};我在网上发现应该使用“s”后缀来最大程度地减少错误并阐明我们在代码中的意图。因此,“s”后缀的使用是否仅供代码阅读者使用?或者还有其他使用它的优势吗?

c++ - 使用 std::string 迭代器查找它的字符串的开始和结束

仅给定一个std::string迭代器,是否可以确定字符串的起点和终点?假设我无权访问字符串对象,因此无法调用string.begin()和string.end(),我所能做的就是递增或递减迭代器并测试值。谢谢,菲尔 最佳答案 简短的回答是否定的。长话短说,因为迭代器不应该知道正在迭代的容器或范围,所以他们只需要知道能够跳转到下一个元素(inc或dec到next或prev)取消对它们自己的引用,以揭示对它们所指向的值的引用当然,还要将自己与其他迭代器进行比较,最重要的是与某种“结束”迭代器进行比较。此外,某些类型的迭代器可能做的不仅

c++ - 使用 C 样式字符串文字与构造未命名的 std::string 对象的默认建议?

因此,C++14引入了许多要使用的用户定义文字,其中之一是"s"literalsuffix,用于创建std::string对象。根据文档,其行为与构建std::string完全相同。对象,像这样:autostr="HelloWorld!"s;//RHSisequivalentto:std::string{"HelloWorld!"}当然构建一个未命名的std::string对象可以在C++14之前完成,但是因为C++14的方式要简单得多,我认为更多的人实际上会考虑构建std::string现场的物体比以前多,这就是为什么我认为提出这个问题是有道理的。所以我的问题很简单:在什么情况下,构

c++ - 固定大小字符串类的最佳实践

我想要一个固定大小的字符串类。理想情况下,该接口(interface)将与std::string之一相匹配,唯一的区别是新类从不分配新内存。对于应避免分配新内存的应用程序,它应该是一个方便的类。大小可以是静态的(在编译时已知)。我认为有两种方式。第一种是围绕char数组实现一个类,然后或多或少地实现std::string具有的所有功能。我还必须实现一些运算符来创建具有给定固定大小字符串等的std::string第二种方法,我什至不确定是否可行,是从std::string继承并覆盖所有可能改变字符串大小的函数。我查看了VisualStudio中的basic_stringheader,它似

C++ 程序在执行 std::string 分配时总是崩溃

我一直在尝试调试崩溃的应用程序中的崩溃(即断言*glibcdetected*free():invalidpointer:0x000000000070f0c0***)当我尝试对字符串进行简单赋值时。请注意,我正在使用gcc4.2.4优化级别设置为-O2的linux系统上进行编译。使用-O0应用程序不再崩溃。例如std::stringabc;abc="testString";但如果我按如下方式更改代码,它就不会再崩溃了std::stringabc("testString");所以我又挠头了!但有趣的模式是,崩溃在应用程序中稍后移动,AGAIN在另一个字符串。我发现应用程序在字符串分配时不断

c++ - 为什么 std::string 没有标准定义的文字后缀?

一个简单的问题:为什么C++11不提供“用户”(实际上是标准库)定义的文字来创建std::string,例如autostr="helloworld"s;//strisastd::string与C++一样,Objective-C既支持C风格的字符串,也支持对用户更友好的库类型NSString;然而,与C++不同的是,没有人会混淆两者,因为通过在字符串文字前加上@来创建NSString是微不足道的。事实上,很少看到Objective-C代码的文字没有有@前缀。每个人都知道这样做的方式,使用NSString并继续使用它。C++11用户定义文字允许这样做,事实上Stroustrup的C++11

c++ - 在头文件中执行 const std::string 的正确方法?

我正在编写一个Cocos2D-X游戏,其中玩家、敌人和其他角色将他们的属性存储在CCMutableDictionary中。,它有点像std::map的装饰器类.可以通过CCMutableDictionary::objectForKey(conststd::string&key)访问字典中的值。方法。现在,在我的许多.cpp文件包含的头文件中,我有几个constchar*const用于访问字典中的值的字符串,如下所示://inConstants.hconstchar*constkAttributeX="x";constchar*constkAttributeY="y";//ina.cpp