比如我定义了一个类 class a{
int b;
int c;
}p[10];
basic_string s;
s+=p[0];
编译器会报错,不知道该如何解决这个问题呢?麻烦高手解答一下。
关于basic_string如何使用
答案:6 悬赏:0 手机版
解决时间 2021-02-19 08:27
- 提问者网友:酱爆肉
- 2021-02-19 05:09
最佳答案
- 五星知识达人网友:爱难随人意
- 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 下都编译通过无任何问题。
楼主最好看下编译器报的是怎样的错误再做决定。
#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]; -- 不知道你要计算什么。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
正方形一边上任一点到这个正方形两条对角线的 |
阴历怎么看 ? |