1059: str
题目
题目描述
你需要实现一个字符串类 str
,支持下列功能/特性:
- 默认值为空串。
- 从
char
/char *
/str
构造实例。 - 用
char *
/str
对其赋值。 - 可通过
operator[]
访问对应位置的字符($0$-base)。 - 成员函数
len()
,返回其长度。 - 成员函数
join(strs)
,其中strs
为std::vector<str>
。该函数用于将一系列字符串拼接成一个新的字符串,且原先字符串之间通过当前实例分隔。例如str(", ").join(std::vector<str>{'1', '2', '3'})
会生成一个表示1, 2, 3
的str
实例。 - 成员函数
slice(l, r)
,表示切片,即提取出字符串中[l, r)
的字符作为一个新的str
实例。例如str("12345").slice(0, 2)
会生成一个表示12
的str
实例。
具体来说,你要补充以下 str.hpp
:
```cpp
include
include
include
class str { private: //to do public: str();//to do str(const char &c);//to do
str(const char *&& s_);//to do
str &operator=(const char *&& s_);//to do
str(const str &other);//to do
str &operator=(const str &other);//to do
char &operator[](size_t pos);//to do
size_t len() const;//to do
str join(const std::vector<str> &strs) const;//to do
str slice(size_t l, size_t r) const;//to do
~str();//to do
}; ```
提交的代码为 str.hpp
的所有内容。
数据范围
实现了除 join
和 slice
以外的所有功能,且保证不会发生内存泄漏,可以获得 $40$ 分。
可以增加必要的成员变量甚至成员函数。
vector
容器仅限使用 join
函数参数中给定的,不得另外新增。其余 STL 容器一律禁用。
Oops! 本题目还没有解答!
助教老师们编题的速度,已经超过了解题的速度!
OJ翻了一新,但本解答集还大多用的是2017-2019级,甚至更早的同学们贡献的答案。
如果你已经AC了,可以的话,请您参考添加页面,与大家一起分享你的题解!