草庐IT

string.format

全部标签

c++ - C 风格字符串到 std::string 的转换说明

我有几个问题,我认为对于有C++经验的人来说很容易回答,我会用粗体显示TL;DR的问题给定以下代码:voidstringTest(conststd::string&s){std::cout希望有人能在这里指出我思维过程中的错误:为什么在传递C风格字符串时,stringTest中的参数必须标记为const?是否没有使用其cstyle字符串构造函数隐式转换为std::string,因此“s”不再是对文字的引用(并且不需要是常量)。此外,cstyle字符串构造函数会是什么样子,编译器如何知道在看到时调用它:stringTest("HelloWorld");它是否简单地将字符串文字识别为类似c

c++ - static const string 成员变量是否总是在使用前初始化?

在C++中,如果我想定义一些non-localconststring,可以在不同的类、函数、文件中使用,我知道的方法是:使用定义指令,例如#defineSTR_VALUE"some_string_value"const类成员变量,例如classDemo{public:staticconststd::stringConstStrVal;};//thenincppstd::stringDemo::ConstStrVal="some_string_value";const类成员函数,例如classDemo{public:staticconststd::stringGetValue(){ret

c++ - 如果 std::string::substr 返回 std::string_view 会有什么缺点?

看看这个例子(取自here):classfoo{std::stringmy_str_;public:std::string_viewget_str()const{returnmy_str_.substr(1u);}};这段代码不好,因为substr返回一个临时的std::string,所以返回的std::string_view指的是一个已经存在的-被摧毁的物体。但是,如果substr返回std::string_view,这个问题就不存在了。此外,如果substr返回std::string_view而不是std::string对我来说似乎合乎逻辑,因为返回的字符串是字符串的View,它的

c++ - 为什么数字类型只有一个 `to_string()`?

我刚刚知道C++有一个std::to_string()在中定义.现在我想知道为什么to_string()仅适用于数字类型。有什么特别的原因,为什么没有更一般的templatestd::stringto_string(constT&t);?可以这样实现:templatestd::stringto_string(constT&t){std::ostringstreams;s我怀疑是这样的将军to_string不存在,因为自己编写很容易,但同样的论点适用于to_string()服用int,double等 最佳答案 因为std::to_st

c++ - 消除 std::vector<std::string> 的列表初始化歧义

我的代码中有一个带有类型签名的重载函数:voidfoo(std::string);voidfoo(std::vector);我希望foo的用户能够使用字符串或字符串列表来调用它//Usecase1foo("str");//Usecase2foo({"str1","str2","str3"});foo({"str1","str2","str3","str4"});问题是当调用者将两个字符串传入foo的初始化列表时。//Problem!foo({"str1","str2"});这个对foo的调用是不明确的,因为它匹配两个类型签名。这是因为显然{"str1","str2"}是std::str

c++ - 创建内联 std::string

是否可以在不创建变量的情况下初始化std::string?我希望完成的事情:throwstd::runtime_error("Error:"+strerror(errno));我目前在做什么:std::stringerror="Error:";std::stringerrmsg(strerror(errno));throwstd::runtime_error(error+errmsg); 最佳答案 只是用其中之一做一个临时的:throwstd::runtime_error(std::string("Error:")+strerror

c++ - typedef a std::string - 最佳实践

我正在用标准C++编写一个库来进行语音转换。到目前为止,我已经使用了std::string。但将来我可能不得不将其更改为其他内容(std::wstring或其他内容)。所以我需要以一种可以轻松切换的方式编写我的库。到目前为止,我已经完成了以下工作。创建了一个将被所有CPP文件使用的头文件为此添加了“typedefstd::string”,并在文件中各处使用了新名称。如果我需要改变类型,我可以简单地在头文件中改变,它会在所有地方反射(reflect)出来。如果有人能看出这是正确的方法或者有更好的方法来做到这一点,我将不胜感激?谢谢 最佳答案

c++ - 如何使用 boost.spirit 提取 std::string?

我尝试使用boost.spirit解析command:param1param2...形式的简单命令行为此我创建了这个解析器:(+(char_-':'))[ref(cmd)=_1]>>':'>>(*char_)[ref(params)=_1]这两个复合解析器的属性类型都是vector,所以如果cmd和params是vector类型就可以了。但是,如果它们是std::string类型,则不会。在网上搜索此解决方案时,我发现提示它也适用于字符串。无论如何我可以用字符串来完成这项工作吗? 最佳答案 当然,当您使用语义操作时,不会发生自动属性

c++ - 为什么 std::cin.getline 没有重载方法来获取 std::string?

我很好奇cin.getline的技术原因和globalgetline功能在不同的地方。不简单地为cin定义所有这些函数签名的动机是什么://THESETWOEXISTistream&cin::getline(char*s,streamsizen);istream&cin::getline(char*s,streamsizen,chardelim);//THESETWOCOULDEXISTistream&cin::getline(string&s);istream&cin::getline(string&s,chardelim);是不是因为可能要添加其他类型,不想把字符串嫁给cin?

gpt支持json格式的数据返回(response_format: ‘json_object‘)

Api.h5.chatCreateChatCompletion({model:'gpt-3.5-turbo-1106',token:'sk-f4fe8b67-fcbe-46fd-8cc9-fd1dac5d6d59',messages:[{role:'user',content:'使用json格式返回十二生肖,包含中文名和英文名,[{id:"1",enName:"",cnName:""}]',},],params:{n:1,response_format:{type:'json_object'},},}).then((res)=>{if(res.code===200){console.log(r