建立一个CString程序,实现针对字符串的全部操作(例如strcpy、strcmp、strlen
答案:2 悬赏:80 手机版
解决时间 2021-02-19 19:45
- 提问者网友:無理詩人
- 2021-02-19 10:28
建立一个CString程序,实现针对字符串的全部操作(例如strcpy、strcmp、strlen、strcat等,具体可以查Turboc2的帮助说明,严禁使用系统提供的库函数,所有函数必须自己定义)。 (要求:1.源文件采用多文件的工程结构2.数据存储采用文件形式3.采用面向对象方法设计4.功能完善,适当的注释)
最佳答案
- 五星知识达人网友:动情书生
- 2021-02-19 10:48
char *mystrcat(char *dst, char *src)
{
char *p = dst;
while(*p)++p;
while(*p++ = *src++);
return dst;
}
char *mystrcpy(char *dst, char *src)
{
while(*dst++ = *src++);
return dst;
}
int mystrcmp(char *dst, char *src)
{
{
char *p = dst;
while(*p)++p;
while(*p++ = *src++);
return dst;
}
char *mystrcpy(char *dst, char *src)
{
while(*dst++ = *src++);
return dst;
}
int mystrcmp(char *dst, char *src)
{
全部回答
- 1楼网友:酒醒三更
- 2021-02-19 12:10
不需要用到继承、多态。界面就不设计了,累。能看明白就行 #include <iostream> using namespace std; class cstring { public: cstring():buffer(null),length(0){} cstring(const cstring& cstr) { int i; buffer = new char[cstr.length + 1]; for (i = 0; i < cstr.length; i++) { buffer[i] = cstr.buffer[i]; } buffer[i] = '\0'; length = cstr.length; } cstring(char* str):length(0) { char* p = str; int i; while (*p) { length++; p++; } buffer = new char[length + 1]; for (i = 0; i < length; i++) { buffer[i] = str[i]; } buffer[i] = '\0'; } ~cstring() { if (length != 0) { delete []buffer; } } void strcpy(cstring cstr); int strcmp(cstring cstr); int strlen(); cstring strcat(cstring cstr); cstring& operator =(const char* str); cstring& operator =(const cstring cstr); friend ostream& operator <<(ostream& os, const cstring cstr); private: char* buffer; int length; }; void cstring::strcpy(cstring cstr) { delete []buffer; *this = cstr; } int cstring::strlen() { return length; } int cstring::strcmp(cstring cstr) { char* p1 = buffer; char* p2 = cstr.buffer; while (*p1 && *p2) { if (*p1 > *p2) { return 1; } else if (*p1 < *p2) { return -1; } p1++; p2++; } if (*p1) { return 1; } else if (*p2) { return -1; } return 0; } cstring cstring::strcat(cstring cstr) { cstring des_cstr(*this); int i; delete []buffer; buffer = new char[length + cstr.length + 1]; for (i = 0; i < length; i++) { buffer[i] = des_cstr.buffer[i]; } for (i = 0; i < cstr.length; i++) { buffer[length + i] = cstr.buffer[i]; } buffer[length + i] = '\0'; length += cstr.length; return *this; } cstring& cstring::operator =(const char* str) { int len = 0; int i; char* p = (char*)str; while (*p) { len++; p++; } buffer = new char[len + 1]; for (i = 0; i < len; i++) { buffer[i] = str[i]; } buffer[i] = '\0'; length = len; return *this; } cstring& cstring::operator =(const cstring cstr) { *this = cstr.buffer; return *this; } ostream& operator <<(ostream& os, const cstring cstr) { os << cstr.buffer; return os; } int main() { cstring s1 = "abc"; cstring s2 = "def"; cout << "s1=\"" << s1 << "\" s2=\"" << s2 << "\"" << endl; cout << "strcpy:" << endl; s1.strcpy(s2); cout << "s1=\"" << s1 << "\" s2=\"" << s2 << "\"" << endl; cout << "s1.strcmp(s2)=" << s1.strcmp(s2) << endl; cout << "s1.strlen()=" << s1.strlen() << endl; cout << "strcat:" << endl; s1.strcat(s2); cout << "s1=" << s1 << endl; return 0; }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯