cho1.
环境说明与题目要求
- 工具:Visual C++ 6.0
- 系统环境:Windows10
- 项目环境:Win32 控制台应用
- 练习目的:
- 学会使用vc6.0创建一个控制台应用
- 熟练C++编程
- 练习字符串封装
- 题目要求:
完成字符串类的封装,字符串类实现以下功能:
函数定义 | 说明 |
---|---|
GString(const char *str); | 实现构造函数赋值 |
GString(const GString &cstr); | 实现拷贝构造函数赋值 |
~GString(); | 实现析构函数释放内存 |
const char* c_str() const; | 获取字符串 |
int size() const; | 获取字符串大小 |
int gstrlen(const char *str); | /获得字符串长度 |
char *gstrcpy(char arr[], const char *str); | 实现字符串拷贝 |
GString & operator = (const char *str); | 实现等号赋值 |
cho2.
创建项目
- File->New->Project->Win32 Console Application
- 在右侧输入项目名称,并选择项目位置:
- 选择OK,再选择Finish
cho3.
测试
- 使用快捷键CTRL+N,选择Files的下的C++ Source File,在右侧输入文件名:
- 在
Main.cpp
文件中输入以下代码:
#include<iostream>
using namespace std;
int main()
{
cout<<"Hello World"<<endl;
return 0;
}
- 编译、运行Main.cpp文件。先选择编译按钮,若没有报错,则运行
- 效果图
cho4.
字符串封装的代码
- GString.h
#ifndef _GSTRING_H
#define _GSTRING_H
#define _CRT_SECURE_NO_WARNINGS
#pragma once
#include<iostream>
using namespace std;
class GString{
private:
char *ps;
public:
//实现构造函数赋值
GString(const char *str);
//实现拷贝构造函数赋值
GString(const GString &cstr);
//实现析构函数释放内存
~GString();
//查看字符串指针
const char *c_str() const;
//查看字符串长度
int size() const;
//获得字符串长度
int gstrlen(const char *str);
//实现字符串拷贝
char *gstrcpy(char arr[], const char *str);
//实现等号赋值
GString &operator = (const char *str);
};
#endif
- GString.cpp
#include <iostream>
using namespace std;
#include "GString.h"
GString::GString(const char *str){
int len=strlen(str);
this->ps=new char[len+1];
strcpy(this->ps,str);
}
GString::GString(const GString &cstr){
if(strlen(this->ps)<strlen(cstr.ps)){
this->ps=new char[strlen(cstr.ps)+1];
}
for(int i=0;cstr.ps[i]!='\0';i++){
this->ps[i]=cstr.ps[i];
}
}
int GString::gstrlen(const char *str){
int len = 0;
if(str){
while (*str++ != '\0'){
len++;
}
}
return len;
}
GString::~GString(){
this->ps=NULL;
}
char *GString::gstrcpy(char arr[], const char *str){
strcpy(arr,str);
return arr;
}
GString & GString::operator = (const char *str){
if(strlen(this->ps)<strlen(str)){
this->ps=new char[strlen(str)+1];
}
strcpy(this->ps,str);
return *this;
}
int GString::size() const{
int len = 0,i=0;
if(this->ps){
while (this->ps[i++] != '\0'){
len++;
}
}
return len;
}
const char *GString::c_str() const{
const char * gstr=this->ps;
return gstr;
}
- Main.cpp
#include "GString.h"
#include <iostream>
using namespace std;
int main(){
char arr[20];
GString gstr=GString::GString("张大仙,每晚7:30,不见不散");
cout << gstr.c_str() << endl;
cout << gstr.gstrlen("虎牙688") << endl;
cout << gstr.gstrcpy(arr,"688") << endl;
gstr="顺风说骚话,逆风讲道理";
cout << gstr.c_str() << endl;
gstr.~GString();
return 0;
}
github地址:https://github.com/chocho-com/Computer-Graphics.git