String类的写法
听侯捷老师讲课的笔记:
string.h头文件:
#pragma once
class String
{
public:
String(const char* cstr);
String(const String& str);
String& operator =(const String& str);
~String(); char* get_c_str() const { return m_data; }//这个类的成员函数内的所有操作,不准备改变私有数据m_data,所以要加上
//const去修饰这个函数,一出手就要:不同凡响
private:
char* m_data;
}; inline String::String(const char* cstr=)
{
if (cstr)
{
std::cout << "如果传进来的字符串不为空,它就是:"<<std::endl;
m_data = new char[strlen(cstr) + ];
strcpy(m_data, cstr);
}
else
{
std::cout << "如果传进来的字符串为空,它就是:" << std::endl;
m_data = new char[];
*m_data = '\0';
}
}
inline String::~String()
{
std::cout << std::endl << "析构函数此时被调用!" << std::endl;
delete[] m_data;
}
//编写拷贝构造函数
inline String::String(const String& str)
{
m_data = new char[strlen(str.m_data)+];
strcpy(m_data, str.m_data);
} //编写拷贝赋值函数
inline String& String::operator =(const String& str)
{
if (this == &str)
return *this;
delete[] m_data;
m_data = new char[strlen(str.m_data) + ];
strcpy(m_data, str.m_data);
return *this;
} //重载输出符<<
#include<iostream>
std::ostream& operator <<(std::ostream& os, const String& str)
{
os << str.get_c_str();
return os;
}
string.cpp源文件:
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include"string.h" using namespace std;
int main()
{ String str("Greetings!,china!");
cout <<"str: "<< str << endl; cout << endl;
String* p = new String("hello,world!");
cout << "*p: " << *p << endl;
delete p; cout << endl;
String str1("to be or not to be");
cout << "str1: " << str1 << endl; cout << endl;
String str2("to be or not to be");
cout << "str2: " << str2 << endl; cout << endl;
String str3;
str3 = str2;
cout << "str3: " << str3 << endl; cout << endl;
cout << "在做自我赋值str3 = str3之后:" << endl;
str3 = str3;
cout << "str3: " << str3 << endl; system("pause");
return ;
}
String类的写法的更多相关文章
- C++面试中string类的一种正确写法
C++ 的一个常见面试题是让你实现一个 String 类,限于时间,不可能要求具备 std::string 的功能,但至少要求能正确管理资源.具体来说: 能像 int 类型那样定义变量,并且支持赋值. ...
- 标准C++中的string类的用法总结
标准C++中的string类的用法总结 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有 ...
- Java学习笔记 02 String类、StringBuilder类、字符串格式化和正则表达式
一.String类一般字符串 声明字符串 >>String str 创建字符串 >>String(char a[])方法用于将一个字符数组创建为String对象 >> ...
- VC++ 标准C++中的string类的用法总结
相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有没有这样使用起来非常方便的类呢?答案是肯 ...
- [C++][语言语法]标准C++中的string类的用法总结
转自:http://www.cnblogs.com/xFreedom/archive/2011/05/16/2048037.html 要想使用标准C++中string类,必须要包含 #include ...
- Hibernate中Entity实体类的写法
记录下一个Entity类的写法,方便以后查阅: package com.bupt.auth.entity; import java.util.Date; import javax.persistenc ...
- c++中string类的详解
,<时返回-1,==时返回0 string的子串:string substr(int pos = 0,int n = npos) const;//返回pos开始的n个字符组成的字符串strin ...
- C++ string类的学习
string类对于处理字符串的一些应用非常的方便,我个人感觉,string和字符数组const char *很像,而且又比字符数组用起来方便的多. 注意其删除,取子串,插入等函数里面都有一个重载版本是 ...
- 标准C++中string类的用法
转自博客园:http://www.cnblogs.com/xFreedom/archive/2011/05/16/2048037.html 相信使用过MFC编程的朋友对CString这个类的印象应该非 ...
随机推荐
- kafka 小案例【一】---设置但个消息集群
启动kafka服务 [ bin/kafka-server-start.sh config/server.properties ] [root@zhangxs kafka_2.]# bin/kafka- ...
- 安装Linux CentOS与用Xshell实现远程连接
注意,进入后有一个选择skip和OK的,选择skip 网络问题 vi /etc/sysconfig/network-scripts/ifcfg-eth0 //打开网络配置文件 ONBOOT=no ...
- 去除app中的标题栏
我之前一直用的是在oncreate方法中添加 requestWindowFeature(Window.FEATURE_NO_TITLE),并且必须写在setContentView(R.layout.a ...
- tomcat 编码问题
默认情况下,tomcat使用的的编码方式:iso8859-1 修改tomcat下的conf/server.xml文件 找到如下代码: < Connector port="8080 ...
- Webpack探索【5】--- plugins详解
本文主要讲plugins相关内容. https://gitbook.cn/gitchat/column/59e065f64f7fbe555e479204/topic/59e96d87a35cf44e1 ...
- go语言之并发编程 channel
前面介绍了goroutine的用法,如果有多个goroutine的话相互之间是如何传递数据和通信的呢.在C语言或者JAVA中,传输的方法包括共享内存,管道,信号.而在Go语言中,有了更方便的方法,就是 ...
- linux c编程:标准IO库
前面介绍对文件进行操作的时候,使用的是open,read,write函数.这一章将要介绍基于流的文件操作方法:fopen,fread,fwrite.这两种方式的区别是什么呢.1种是缓冲文件系统,一种是 ...
- Symfony 如何使用ckeditor
首先: 1)加载以下两个bundle "egeloen/ckeditor-bundle": "^4.0","helios-ag/fm-elfinder ...
- sql 2008数据事务日志已满处理方法
突然发现sql 2008出现错误:数据库 'mybase_db' 的事务日志已满.若要查明无法重用日志中的空间的原因,请参阅 sys.databases 中的 log_reuse_wait_desc ...
- SVM学习笔记(一)
支持向量机即Support Vector Machine,简称SVM.一听这个名字,就有眩晕的感觉.支持(Support).向量(Vector).机器(Machine),这三个毫无关联的词,硬生生地凑 ...