草庐IT

localized_string

全部标签

c++ - 从最多 X 个字符构造 std::string,在空字符处停止

我正在从文件中的结构中读取字符串,其中每个字符串都有固定长度,并带有'\0'填充。如果存储的字符串需要整个长度,它们不会以零结尾。我目前正在用这样的方式构造std::string://charMyString[1000];std::stringstdmystring(MyString,ARRAYSIZE(MyString));但是,这也会复制填充。我现在可以修剪字符串,但是是否有一种优雅而快速的方法来首先防止复制?速度比空间更重要,因为这是循环运行。 最佳答案 简单的解决方案是:先计算出正确的长度按照Dieter的建议使用strnl

c++ - 强制 String to int 函数消耗整个字符串

给定一个应该代表数字的字符串,我想将它放入一个转换函数中,如果整个字符串没有转换,该函数将提供通知。对于输入:“12”:istringstream::operator>>输出12atoi输出12stoi输出12对于输入"1X"我想要一个失败响应,但我得到:istringstream::operator>>输出1atoi输出1stoi输出1对于输入"X2":istringstream::operator>>输出0并设置错误标志atoi输出0stoi抛出错误[LiveExample]有没有办法在输入"1X"时引发错误行为? 最佳答案 编

c++ - 避免在 std::map/std::unordered_map 中使用 std::string 键查找临时对象

这个问题在这里已经有了答案:Avoidingkeyconstructionforstd::map::find()(4个答案)关闭8年前。考虑以下代码:std::mapm1;autoi=m1.find("foo");constchar*key=...autoj=m1.find(key);这将为每次map查找创建一个临时的std::string对象。避免它的规范方法是什么?

c++ - 为什么 std::bad_cast 被 boost::locale 抛出?

我试图了解如何使用boost::locale来比较忽略大小写和变体的字符串。我直接尝试了Boost文档中的代码:http://www.boost.org/doc/libs/1_51_0/libs/locale/doc/html/collation.htmlboost::locale::generatorgen;std::localevLocale=gen("");std::wstringa=L"Façade",b=L"facade";//Followingwillthrowbad_castbooleq=std::use_facet>(vLocale).compare(boost::lo

c++ - thread_local成员变量构造

我遇到了thread_local的一些奇怪行为,不确定是我做错了什么还是GCC错误。我有以下最小重现场景:#includeusingnamespacestd;structbar{structfoo{foo(){cerr输出上面的注释行如下所示:main0Ideone取消注释后,它变成了这样:mainfoofoo4242Ideone我是不是漏掉了什么蠢东西?$gcc-vUsingbuilt-inspecs.COLLECT_GCC=gccCOLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapperTarget:x86_6

java tor String.Match()用于整数

我正在尝试从我的OCR文本检测器中获取某些数字。到目前为止,我还无法成功提取某种格式的数字。该数字看起来与此5225612832654455相似,通常该格式可能像xxxxxxxxxxxxxxxx我需要一个字符串匹配的正则是获得这样的数字。注意:图源还有其他数字,我需要避免在这里捕获是方法ListtextComponents=text.getComponents();for(TextcurrentText:textComponents){floatleft=translateX(currentText.getBoundingBox().left);floatbottom=translateY(c

c++ - std::string 与 unicode 的奇怪行为

我有以下代码:#includestd::stringeps("ε");intmain(){std::cout它以某种方式在Ubuntu上用g++和clang编译,甚至打印出正确的字符ε。我也有几乎相同的一段代码,它愉快地将ε和cin读入std::string。顺便说一下,eps.size()是2。我的问题是-它是如何运作的?我们如何将unicode字符插入到std::string中?我的猜测是操作系统使用unicode处理所有这些工作,但我不确定。编辑对于输出,我知道是终端负责向我显示正确的字符(在本例中为ε)。但是对于输入:cin将符号读取为''或任何其他空格字符(据我所知,逐字节)

c++ - utf-8 中 std::string 的子字符串? C++11

我需要获取假定为utf8的std::string中前N个字符的子字符串。我了解到.substr无法正常工作……正如……预期的那样。引用:我的字符串大概是这样的:任务:\n\n1亿2千匹 最佳答案 我found这段代码,我正要尝试一下。std::stringutf8_substr(conststd::string&str,unsignedintstart,unsignedintleng){if(leng==0){return"";}unsignedintc,i,ix,q,min=std::string::npos,max=std::s

c++ - C++ 临时对象的生命周期是在什么时候创建的? : expression extended by binding it to a local const reference?

我不清楚是否可以通过将临时对象绑定(bind)到?:表达式中的常量引用来延长临时对象的生命周期:classFoo{...};Foo*someLValue=...;constFoo&=someLValue?*someLValue:Foo();通过调用默认构造函数Foo()创建的临时对象的生命周期是否通过将其绑定(bind)到本地constref来延长,即使绑定(bind)是有条件的?还是因为Foo()的临时值会在?:表达式的末尾被销毁,所以这会创建一个悬空引用? 最佳答案 在此代码中,条件运算符的第二个和第三个操作数具有不同的值类别(

C++中String归纳,相关接口模拟实现,深度理解

目录前言(string简介,及深度理解重要性)一、string的实例化构造1.利用string类接口的构造2.string构造的模拟实现1、构造函数2、拷贝构造二、string的静态变量1、npos介绍及原理​编辑2、npos模拟三、string的遍历方法1、下标遍历下标方括号模拟2、迭代器遍历迭代器及相关函数模拟3、范围for遍历模拟使用范围for的注意事项四、string的容量操作1、max_size():2、size()与capacity()模拟及其原理3、reserve()reserve()原理及其模拟4、resize()五、string的增删查改1、push_back()模拟实现2、