草庐IT

string.format

全部标签

c++ - std::string 的转换运算符无法处理赋值

我正在使用代理类型来推迟工作,直到将结果分配给一个变量,它通过在代理类型上使用转换运算符来工作。为std::string添加转换运算符重载时,它适用于从代理构建字符串,但无法编译赋值,并显示以下错误消息:error:ambiguousoverloadfor'operator='虽然这个问题与operatorT()notusedinassignment的问题类似,这里的解决方案不适用,因为我也在使用模板化转换运算符。下面是片段:#include#includestructProxy{templateoperatorT(){Tres;std::cerr如何使这个代理与字符串赋值一起工作?

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++ - 如何*正确*地将 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++ - Visual Studio C++ "Automatically format completed block on }"

VisualStudio具有适用于C#的此设置,但我找不到适用于C++的设置。“在}上自动格式化完成的block”我在处理C#内容时经常使用此功能,现在我又回到了C++(我更喜欢),我想念这个功能。我该如何设置?我想此时我必须使用第3方插件或其他东西,但我在所有搜索中找不到任何相关插件。此功能的作用:如果我有一段代码并在其前键入“{”,然后在其后键入“}”,它会自动将其跳格以匹配使代码更易于阅读的跳格规则。例如:从一些代码开始:{inti=1;intj=2;j+=i;}在某处添加一个开始括号:{inti=1;intj=2;{j+=i;}添加一个结束括号,包含的代码会自动为我添加标签:{

c++ - "-D__STDC_FORMAT_MACROS"gnu 编译器选项

我正在清理我的Makefile并试图了解那里实际发生了什么。我遇到了上述选项。它必须启用一些宏来保证与旧C库的兼容性,但我找不到它的用途。gnu编译器(g++)选项是什么g++-D__STDC_FORMAT_MACROS意思还是做?g++甚至有必要吗?PS:我在Linux下工作 最佳答案 感谢Nick的链接,我得出结论,g++不需要它。它与C的inttype.h和printf有关。来自链接Inparticular,thesymbol__STDC_FORMAT_MACROS,mentionedinfootnote182oftheCst

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

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

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

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

c++ - 错误:无法将 std::vector<std::basic_string<char>> 转换为 std::string*

作为C++的新手,我曾尝试在我的一个程序中创建一个简单的void函数以显示数组。但是,如标题所示,存在错误。我认为这是一个问题,因为我试图用与函数参数不同形式的数组来调用它。我不确定如何修改它。#include#includeusingnamespacestd;voiddisplay_array(stringarr[]){inti;for(i=0;ipaths;cout>current;while(current!="0"){paths.push_back(current);cin>>current;}display_array(paths);}感谢任何帮助。

c++ - 为什么不能将 mem_fn 应用于 std::string 的成员函数?

structint_holder{intvalue;inttriple(){returnvalue*3;}};intmain(intargc,constchar*argv[]){std::stringabc{"abc"};int_holderone{1};autof1=mem_fn(&std::string::clear);autof2=mem_fn(&int_holder::triple);f1(abc);f2(one);}我在Xcode中测试这样的代码,编译器发出这样的错误似乎mem_fn可以用于用户定义类的成员函数,但不能用于标准字符串的成员函数,有什么不同,为什么?感谢您的阅读

c++ - 通过 clang-format 格式化 lambda 背后的逻辑是什么?

我在Emacs(24.5.2版)中使用clang-format(3.5版)。下面是一段由clang-format以LLVM风格格式化的简单代码:intmain(){std::cout";std::stringword;while(std::cin>>word){std::cout";}return0;}请注意它是如何对齐lambda的正文和右括号的。这种格式是否有任何逻辑,或者它只是缺乏对lambda的支持?我需要设置clang-format的配置参数以获得更好的格式吗? 最佳答案 std::accumulate(word.cbeg