永发信息网

关于basic_string如何使用

答案:6  悬赏:0  手机版
解决时间 2021-02-19 08:27
比如我定义了一个类 class a{
int b;
int c;
}p[10];
basic_string s;
s+=p[0];

编译器会报错,不知道该如何解决这个问题呢?麻烦高手解答一下。
最佳答案
  • 五星知识达人网友:爱难随人意
  • 2021-02-19 06:33
虽然 basic_string 常用于 char 和 wchar_t 类型,但标准并没有规定只能用于这两个类型,template 参数应当是都能够识别的。我试了下面一段程序

#include
#include
using namespace std;
class a{
int b;
int c;
}p[10];
basic_string s;
int main(){
s+=p[0];
s.operator +=(p[0]);
}

与上面的几乎完全一样。此程序在 VC9.0 和 GCC3.4.5 下都编译通过无任何问题。
楼主最好看下编译器报的是怎样的错误再做决定。
全部回答
  • 1楼网友:不甚了了
  • 2021-02-19 11:58
晕 错误么 不错才怪 多看看书吧 书上有讲
  • 2楼网友:持酒劝斜阳
  • 2021-02-19 10:29
(我也不懂,但是找到下面这些资料,希望对你有用) standard library中basic_string组件的实现(众所周知,string 是这样定义的:typedef basic_string string;),它是C++ library 中一个非常重要的部分。但是真正有意思的是,那些可供下载的代码是为了配合VC++ 6.0一起工作而特别精心制作的。VC++ 6.0是一个因具有两大对立特性而知名的编译器――它所具有的普及性以及它对generic programming的弱支持。 伴随这篇文章所实现的basic_string不是一个、两个,而是十二个有着不同权衡的实现。他们不是玩具代码,我们讨论的都是完整、高效、符合标准、具有工业级强度的实现(哦,当然,可能有bug)。你可能首先会想到这会有可怕的代码量,不过,相信我,这篇文章将会非常的有趣。 一种尺寸不会适用所有的身材 首先,大家可能会疑惑为什么要再次实现basic_string?他不是已经在standard library中实现了吗,再来实现一个basic_string是不是仅仅只具有教学价值。 众所周知,在多线程程序中使用string存在非常严重的问题。标准库会尝试在basic_string的实现中允许使用Copy-on-write。(Copy-on-write在其拥护者那里有个亲切的昵称:COW,但是在反对者眼里却成了"the mad cow")基于COW的strings在内部使用引用计数器(reference counting),这在多线程程序中是不可用的,但是如果standard library在实现中支持多线程,那么用在单线程时,性能常常又不可接受,看来必须有所选择。
  • 3楼网友:詩光轨車
  • 2021-02-19 09:59
s+=p[0];这地方错了 basic_string 只能用于char 和 wchar_t ,不能用于别的
  • 4楼网友:有你哪都是故乡
  • 2021-02-19 08:26
我也不懂,但是找到下面这些资料,希望对你有用) standard library中basic_string组件的实现(众所周知,string 是这样定义的:typedef basic_string string;),它是C++ library 中一个非常重要的部分。但是真正有意思的是,那些可供下载的代码是为了配合VC++ 6.0一起工作而特别精心制作的。VC++ 6.0是一个因具有两大对立特性而知名的编译器――它所具有的普及性以及它对generic programming的弱支持。 伴随这篇文章所实现的basic_string不是一个、两个,而是十二个有着不同权衡的实现。他们不是玩具代码,我们讨论的都是完整、高效、符合标准、具有工业级强度的实现(哦,当然,可能有bug)。你可能首先会想到这会有可怕的代码量,不过,相信我,这篇文章将会非常的有趣。 一种尺寸不会适用所有的身材
  • 5楼网友:笑迎怀羞
  • 2021-02-19 07:13
basic_string 只能用于char 和 wchar_t。 typedef basic_string string; typedef basic_string wstring; 你的 class a 像一个 struct 声明。 struct a {int b; int c;} p[10]; struct a s; p[0].b = 1; s = p[0]; printf("%d",s.b); -------------------- s+=p[0]; -- 不知道你要计算什么。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯