jjzjj

stdstring

全部标签

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

C++ 字符串 : UTF-8 or 16-bit encoding?

我仍在尝试决定我的(家庭)项目是否应该使用UTF-8字符串(根据std::string实现,必要时带有额外的UTF-8特定函数)或一些16位字符串(实现为std::wstring)。该项目是一种编程语言和环境(就像VB,它是两者的结合)。有一些愿望/限制:如果它可以在有限的硬件(例如内存有限的计算机)上运行,那就太棒了。我希望代码在Windows、Mac和(如果资源允许)Linux上运行。我将使用wxWidgets作为我的GUI层,但我希望与该工具包交互的代码限制在代码库的一个角落(我将拥有非GUI可执行文件)。在处理用户可见文本和应用程序数据时,我希望避免使用两种不同类型的字符串。目

C++ 字符串 : UTF-8 or 16-bit encoding?

我仍在尝试决定我的(家庭)项目是否应该使用UTF-8字符串(根据std::string实现,必要时带有额外的UTF-8特定函数)或一些16位字符串(实现为std::wstring)。该项目是一种编程语言和环境(就像VB,它是两者的结合)。有一些愿望/限制:如果它可以在有限的硬件(例如内存有限的计算机)上运行,那就太棒了。我希望代码在Windows、Mac和(如果资源允许)Linux上运行。我将使用wxWidgets作为我的GUI层,但我希望与该工具包交互的代码限制在代码库的一个角落(我将拥有非GUI可执行文件)。在处理用户可见文本和应用程序数据时,我希望避免使用两种不同类型的字符串。目

c++ - map<string, string> 如何在这个 map 中插入数据?

我需要以键值格式存储字符串。所以我使用如下map。#includeusingnamespacestd;intmain(){mapm;strings1="1";stringv1="A";m.insert(pair(s1,v1));//Error}插入行出现错误errorC2784:'boolstd::operator&,conststd::_Tree&)':couldnotdeducetemplateargumentfor'conststd::_Tree&'from'conststd::string'我也尝试了下面的make_pair函数,但也报同样的错误。m.insert(make_p

c++ - map<string, string> 如何在这个 map 中插入数据?

我需要以键值格式存储字符串。所以我使用如下map。#includeusingnamespacestd;intmain(){mapm;strings1="1";stringv1="A";m.insert(pair(s1,v1));//Error}插入行出现错误errorC2784:'boolstd::operator&,conststd::_Tree&)':couldnotdeducetemplateargumentfor'conststd::_Tree&'from'conststd::string'我也尝试了下面的make_pair函数,但也报同样的错误。m.insert(make_p

c++ - 测试 libstdc++ 的版本是否使用符合 C++11 的 std::string

我正在编写一些C++11代码,这些代码对std::string的性质做出假设,这些假设是有效的,但代表了C++11中更改的行为。在早期,libstdc++的basic_string实现符合98/03要求,但不符合更严格的C++11要求。据我了解,libstdc++已经修复了围绕basic_string的问题。问题是人们使用的许多版本的库都没有实现这个修复。而且我的代码可能会以许多令人不快的方式默默地失败。如果用户尝试针对那些不符合标准的libstdc++版本编译我的库,我希望触发static_assert。如何检测版本,同样重要的是,我应该寻找哪个版本? 最

c++ - 测试 libstdc++ 的版本是否使用符合 C++11 的 std::string

我正在编写一些C++11代码,这些代码对std::string的性质做出假设,这些假设是有效的,但代表了C++11中更改的行为。在早期,libstdc++的basic_string实现符合98/03要求,但不符合更严格的C++11要求。据我了解,libstdc++已经修复了围绕basic_string的问题。问题是人们使用的许多版本的库都没有实现这个修复。而且我的代码可能会以许多令人不快的方式默默地失败。如果用户尝试针对那些不符合标准的libstdc++版本编译我的库,我希望触发static_assert。如何检测版本,同样重要的是,我应该寻找哪个版本? 最

c++ - 直接从 std::istream 读取到 std::string

是否可以直接将已知数量的字节读取到std::string中,而无需创建临时缓冲区?例如,目前我可以通过boost::uint16_tlen;is.read((char*)&len,2);char*tmpStr=newchar[len];is.read(tmpStr,len);std::stringstr(tmpStr,len);delete[]tmpStr; 最佳答案 std::string有一个你可以使用的resize函数,或者一个可以做同样事情的构造函数:boost::uint16_tlen;is.read((char*)&le

c++ - 直接从 std::istream 读取到 std::string

是否可以直接将已知数量的字节读取到std::string中,而无需创建临时缓冲区?例如,目前我可以通过boost::uint16_tlen;is.read((char*)&len,2);char*tmpStr=newchar[len];is.read(tmpStr,len);std::stringstr(tmpStr,len);delete[]tmpStr; 最佳答案 std::string有一个你可以使用的resize函数,或者一个可以做同样事情的构造函数:boost::uint16_tlen;is.read((char*)&le

C++:指向 std::string 转换的 char 指针是否复制内容?

当我使用构造函数将char*转换为std::string时:char*ps="Hello";std::stringstr(ps);我知道std容器在被要求存储值时倾向于复制值。是复制整个字符串还是仅复制指针?如果之后我执行str="Bye"是否会将ps更改为指向"Bye"? 最佳答案 std::string对象将分配内部缓冲区并将ps指向的字符串复制到那里。对该字符串的更改不会反射(reflect)到ps缓冲区,反之亦然。它被称为“深拷贝”。如果只复制指针本身而不复制内存内容,则称为“浅拷贝”。重申一下:std::string在这种