string 简单实现
namespace ss{
class string {
friend ostream& operator <<(ostream&, const string&);
char *_str;
public:
string():_str(new char[1]){
_str[0] = '\0';
}
string(const char* str):_str(new char[strlen(str)+1]) {
strcpy(_str, str);
}
string(const string & s):_str(new char[s.size()+1]){
strcpy(_str, s._str);
}
string( string&& s):_str(s._str) {
s._str = nullptr;
}
//operator
string & operator =(string s) {
swap(s);
return *this;
}
char & operator [](int i) {return _str[i];}
/*
string &operator =(const string &s){
if (this != &s) {
delete []_str;
if(s._str!= nullptr) {
_str = new char[strlen(s._str)+1];
strcpy(_str, s._str);
}
}
return *this;
}*/
//get
size_t size() const {
return strlen(_str);
}
//
void swap(string& s) {
std::swap(_str, s._str);
}
};
ostream& operator << (ostream& os, const string &ob)
{
os << ob._str;
return os;
}
};
string 简单实现的更多相关文章
- C++标准库<string>简单总结
C++标准库<string>简单总结 在C++中,如果需要对字符串进行处理,那么它自带的标准库<string>无疑是最好的选择,它实现了很多常用的字符处理函数. 要想使用标准C ...
- std::string 简单入门
string的定义原型 typedef basic_string<char, char_traits<char>, allocator<char> > string ...
- String 简单使用
package com.direct.str; public class TestObject { /** * @param args */ /* * 1.object类是根类,里面定义的==和equ ...
- CDOJ 1502 string(简单贪心)
题目大意:原题链接 相邻两个字母如果不同,则可以结合为前一个字母,如ac可结合为a.现给定一个字符串,问结合后最短可以剩下多少个字符串 解体思路:简单贪心 一开始读题时,就联想到之前做过的一道题,从后 ...
- C++ string简单的使用技巧
截取substr //string的操作 #include<iostream> using namespace std; int main() { string a,b; a=" ...
- Java String简单知识点总结
1.字符串的比较 public void run(){ //str1在池中 String str1 = new String("String"); //str2,str3 存在于堆 ...
- string简单成员函数的实现
原文:https://blog.csdn.net/zcyzsy/article/details/52146124 #include<iostream> using namespace st ...
- codeforces 710E Generate a String(简单dp)
传送门:http://codeforces.com/problemset/problem/710/E 分析: 让你写一个全由"a"组成的长为n的串,告诉你两种操作,第一种:插入一个 ...
- Thrift简单实践
0.什么是RPC RPC(Remote Procedure Call - 远程过程调用),是通过网络从远程计算机上请求服务,而不需要了解底层网路技术的细节.简单点说,就是像调用本地服务(方法)一样调用 ...
随机推荐
- 建议53:用状态模式美化代码,关于python-state工具包的理解
在<编写高质量代码:改善python程序的91个建议>的建议53:用状态模式美化代码小节中,介绍了状态模式例如以下:就是当一个对象的内在状态改变时,同意改变其行为,但这个对象看起来 ...
- 【C++】String类中的运算符重载
模块化设计: 头文件: <span style="font-size:18px;"> #ifndef operator_operator_h #define opera ...
- java.lang.ClassNotFoundException: org.objectweb.asm.ClassWriter
转自:https://www.cnblogs.com/yfceshi/p/6814802.html Caused by: javax.xml.ws.WebServiceException: java. ...
- Binary Indexed Tree 总结
特点 1. 针对 数组连续子序列累加和 问题(需要进行频繁的 update.sum 操作): 2. 并非是树型结构,只是逻辑上层次分明: 3. 可以通过 填坑法 来理解: 4. 中心思想:每一个整数都 ...
- Re:从0开始的微服务架构--(二)快速快速体验微服务架构?--转
原文地址:https://mp.weixin.qq.com/s/QO1QDQWnjHZp8EvGDrxZvw 这是专题的第二篇文章,看看如何搭建一个简单模式的微服务架构. 记得好久之前看到一个大牛说过 ...
- Android 中的View与ViewGroup
Android重点知识--View和ViewGroup与自定义控件 作者:丁明祥 邮箱:2780087178@qq.com 一.基础 ViewGroup 参考资料: Android 手把手教您自定义V ...
- layer-list
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android=" ...
- listview添加的头部布局超过一屏头部内容显示不全
headView的实际高度超过一个屏幕,但是显示的结果只有一个屏幕,超过一个屏幕高度意外的部分显示不全. 只使用了listView.getRefreshable().addHeadView(headV ...
- Springboot use tomcat JNDI
Springboot use tomcat JNDI [use database pool : dbcp Druid bonecp C3P0 proxool] [1]apache-tomcat-9. ...
- 防范CSRF(三)
除了可以更改微软默认的cookie的名字外,还可以更改默认的加密方法.继承IAntiForgeryAdditionalDataProvider接口,实现里面的方法即可. 采用的加密方法有加盐和使用时间 ...