草庐IT

const-string

全部标签

c++ - 你能初始化 unique_ptr 的 "static const vectors"吗? (C++17 与 GCC 7.3)

我正在尝试创建一个staticconst默认对象(规则)的列表太大而不能经常复制,因此我想将它们存储在vector中的unique_ptr.我注意到类似的问题已经进行了几次,但我不清楚这是否真的可行(我倾向于不可行)。即你不能使用initializer_list与unique_ptr因为对成员的访问是const导致复制操作。您不能通过引用传递临时变量,从而导致复制操作。因此两者:staticconststd::vector>kStrings={std::unique_ptr(newstd::string("String1")),std::unique_ptr(newstd::strin

c++ - 在 C++ 的编译时检查类型是否为 std::basic_string<T>

我在我的C++代码中定义了is_string:#includetemplatestructis_string{staticconstboolvalue=false;};templatestructis_string>{staticconstboolvalue=true;};intmain(){std::cout::value::value对于std::string和std::wstring都是如此。但我需要这样的谓词:is_string::value//tobetrueis_string::value//tobefalseis_string::value//tobefalseis_st

c++ - string::capacity/reserve() 算作终止 null 吗?

从cppref对capacity()的描述来看并不明显和reserve()是否计算终止空字符。 最佳答案 标准statesthat:Inallcases,size().和size()不包括终止空值。因为有可能size()等于capacity(),在这种情况下,这意味着capacity()也不计算终止空值。请注意,在C++11及更高版本中,mystring.c_str()相当于mystring.data()相当于&mystring[0],和mystring[mystring.size()]保证是'\0'.检查这个Demo.

c++ - 无法手动调用 std::string 的析构函数

我正在试验union,并将这个示例设为A类,其中包含匿名union成员。由于union包含一个std::string和一个std::vector我需要为该类定义一个析构函数。但是,当我尝试手动调用~string()时,我得到了union.cpp:Indestructor'A::~A()':union.cpp:14:14:error:expectedclass-namebefore'('tokens_.~string();我不明白这个vector。如果我删除对s._~string();的调用,它可以正常编译。这是编译器错误吗?我正在使用MinGW64。#include#includecl

c++ - 如何在 C++ 中将 const ref a 返回给局部变量?

我有一个无法更改函数参数的函数。我需要返回对在此函数中创建的std::string的const引用。我尝试使用boostshared_ptr,但这不起作用。为什么?我该如何进行这项工作?conststd::string&getVal(conststd::string&key){boost::shared_ptrretVal(newstd::string());...//buildretValstringwith+=operatorbasedonkeyreturn*retVal;} 最佳答案 您不能使用C++从函数返回对局部变量的引用

const 时的 C++ 行为

这是一个基本结构(我希望如此)structSomeType{floata;floatb;floatc;floatd;SomeType(float,float,float,float);};和出处SomeType::SomeType(floatna,floatnb,floatnc,floatnd):a(na),b(nb),c(nc),d(nd){}我有课structSomeClass{staticconstSomeTypev;SomeClass();};当我初始化它的时候constSomeTypeSomeClass::v(0,0,0,0);我的值变为inf或nan或-nan。有人以前见过

C++ std::string 与 !=、< 和 > 的用法

这个问题不太可能帮助任何future的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visitthehelpcenter.关闭9年前。std::string的用法示例是什么?用!=上课,>,和?

c++ - 在 C++ 中将 int[] 转换为 String

我有一个字符串定义为std::stringheader="00110033";现在我需要字符串来保存数字的字节值,就好像它是这样构造的chardata_bytes[]={0,0,1,1,0,0,3,3};std::stringheader=newstd::string(data_bytes,8).c_str());我使用atoi将初始字符串转换为int数组。现在我不确定如何制作字符串。让我知道是否有更好的方法。 最佳答案 你可以写一个小函数stringint_array_to_string(intint_array[],intsiz

c++ - const 成员函数需要说明

我对这段代码编译和运行的原因有点困惑:classA{private:int*b;public:A():b((int*)0xffffffff){}int*get_b()const{returnthis->b;}};intmain(){Aa;int*b=a.get_b();cout运行此代码的输出也是FFFFFFFF...出乎我的意料。this->b不应该返回constint*因为它在const成员函数中吗?因此return行应该生成编译器转换错误以尝试将constint*转换为int*显然,我对const成员函数的含义的理解存在差距。如果有人可以帮助我弥补这一差距,我将不胜感激。

c++ - boost::variant 是否与 std::string 一起使用?

我使用boost::variant用C++编写了一个简单的程序。程序代码如下所示。#include#include#includeintmain(intargc,char**argv){boost::variantv;v=3;std::cout但是当我尝试用命令编译它时g++main.cpp-omain-lboost_system我明白了/usr/include/boost/variant/detail/variant_io.hpp:64:error:nomatchfor‘operator>>*)this)->boost::detail::variant::printer>>::out