Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[C++] Ни фига 22.06.06 21:04 Число просмотров: 2818
Автор: panter_dsd Статус: Незарегистрированный пользователь
|
Оба пробовал, по отдельности не глючат, но при Str1+Str2, конечно, ничего не происходит. При Str1=Str2 все нормально. Вот мой код.
MyString.h
//---------------------------------------------------------------------------
#include <string.h>
#include <stdio.h>
class TString
{
private:
char *string;
int StrLength;
void AddStr(char *aStr);
public:
TString();
TString(char *aStr);
TString(TString &aString);
~TString();
void Clear();
void Delete(int First, int Count);
void LowerCase();
char *c_str() {return string;};
int Length() {return StrLength;};
void operator=(TString &aString);
void operator=(char *aStr);
TString operator+(const TString &aString,const TString &bString);
TString operator+(char *aStr);
char operator[](int index);
};
//-------------------------------------------
TString::TString()
{
string=0;
string=new char;
StrLength=0;
}
//-------------------------------------------
TString::TString(char *aStr)
{
StrLength=strlen(aStr);
string=new char[StrLength+1];
strcpy(string,aStr);
}
//-------------------------------------------
TString::TString(TString &aString)
{
StrLength=aString.StrLength;
string=new char[StrLength+1];
strcpy(string,aString.string);
}
//-------------------------------------------
TString::~TString()
{
if (string) {delete[] string;}
string=0;
StrLength=0;
}
//-------------------------------------------
void TString::AddStr(char *aStr)
{
char *Temp=new char[StrLength+strlen(aStr)+1];
strcpy(Temp,string);
Temp[StrLength]='\0';
if (string) {delete[] string;}
strcat(Temp,aStr);
string=Temp;
StrLength+=strlen(aStr);
}
//-------------------------------------------
void TString::Clear()
{
if (string)
{
delete[] string;
string=0 ;
StrLength=0;
}
}
//-------------------------------------------
void TString::Delete(int First, int Count)
{
//
}
//-------------------------------------------
void TString::operator=(TString &aString)
{
if (string)
{
delete[] string;
string=0 ;
StrLength=0;
}
StrLength=aString.StrLength;
string=new char[StrLength+1];
strcpy(string,aString.string);
};
//-------------------------------------------
void TString::operator=(char *aStr)
{
if (string)
{
delete[] string;
string=0 ;
StrLength=0;
}
StrLength=strlen(aStr);
string=new char[StrLength+1];
strcpy(string, aStr);
};
//-------------------------------------------
TString TString::operator+(const TString &aString,const TString &bString)
{
TString Temp(aString);
Temp.AddStr(bString.c_str());
return Temp;
};
//-------------------------------------------
TString TString::operator+(char *aStr)
{
TString Temp(*this);
Temp.AddStr(aStr);
return Temp;
};
//-------------------------------------------
char TString::operator[](int index)
{
if ((index>StrLength)|(index<1)) {return '\0';}
return string[index-1];
};
//-------------------------------------------
void TString::LowerCase()
{
for (int i=0; i<StrLength; i++)
{
if ((int(string[i])>65) && (int(string[i])<90))
{
string[i]=string[i]+32;
}
if ((int((unsigned char)(string[i]))>128) && (int((unsigned char)(string[i]))<144))
{
string[i]=string[i]+32;
}
if ((int((unsigned char)(string[i]))>143) && (int((unsigned char)(string[i]))<160))
{
string[i]=string[i]+81;
}
}
}
//-----------------------------------------------------------------------------------------------------------------------------
temp.cpp
//--------------------------------------------------------------
#include "mystring.h"
main()
{
TString Str;
TString Str1("sadfasdf");
Str="PanteR";
Str=Str+Str1;
printf(Str.c_str());
printf("\n");
}
|
|
|