实现了向一个字符串中插入另一个字符串,这边的字符串时自己定义的类型。
如再aasdasd中的第2个位置插入ppp,就变为aapppsdasd;
// HSTRING.cpp: 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "type.h"
#include <Windows.h>
#include<iostream>
#include<stdio.h>
using namespace std;
class HString
{
public:
HString();
~HString();
Status StrInsert(int pos, HString T) {
//将T插入到本对象的pos位置
if (pos<1 || pos>length - 1)return ERROR;
if (T.ch)//如果T非空
{
char * ch_tmp = new char[length + T.length];
memcpy(ch_tmp, ch, length);
for (int i = length - 1; i >= pos - 1; i--) {
ch_tmp[i + T.length] = ch_tmp[i];
}
//现在pos..。length已经空了,下面进行插入
for (int i = 0; i <T.length; i++) {
ch_tmp[pos+i] = T.ch[i];
}
ch = ch_tmp;
length = length + T.length;
}
return OK;
}
Status StrAssign(char * chars) {
if (ch) delete ch;
int count=0;
char * chars_temp = chars;
while (*chars_temp !='\0') {
count++;
chars_temp++;
}
//cout << count;
if (!count) { ch = NULL; length = 0; }//如果要复制的chars为空
ch = new char[count];
if (!ch) return ERROR;
for (int i = 0; i < count; i++) {
ch[i] = chars[i];
}
//std::cout << std::endl;
length = count;
return OK;
}
void StrPrint() {
//打印
std::cout << "打印的字符串为:";
for (int i = 0; i < length;i++ ) {
std::cout << ch[i];
}
std::cout <<std::endl;
}
private:
char *ch;
int length;
};
HString::HString()
{
}
HString::~HString()
{
}
int main()
{
HString myString;
HString insertStr;
char * insertchars = (char *)"fuck";
insertStr.StrAssign(insertchars);
char * stq = (char *)"1234567";
myString.StrAssign(stq);
myString.StrPrint();
myString.StrInsert(2, insertStr);
cout << "after insert:";
myString.StrPrint();
cout << endl;
system("pause");
return 0;
}
运行结果ruxi如下图所示: