📄 strngs.cpp
字号:
/********************************************************************** * File: strngs.c (Formerly strings.c) * Description: STRING class functions. * Author: Ray Smith * Created: Fri Feb 15 09:13:30 GMT 1991 * * (C) Copyright 1991, Hewlett-Packard Ltd. ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. ** You may obtain a copy of the License at ** http://www.apache.org/licenses/LICENSE-2.0 ** Unless required by applicable law or agreed to in writing, software ** distributed under the License is distributed on an "AS IS" BASIS, ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ** See the License for the specific language governing permissions and ** limitations under the License. * **********************************************************************/#include "mfcpch.h" //precompiled headers#include "tprintf.h"#include "strngs.h"/********************************************************************** * STRING::operator= * * Assign a char* to a STRING. **********************************************************************/STRING & STRING::operator= ( //assign char*const char *string //string to copy) { if (string != NULL) { INT32 length = strlen (string) + 1;//length of source if (ptr == NULL) //get space ptr = alloc_string (length); //got wrong size else if (strlen (ptr) != (UINT32) length - 1) { free_string(ptr); //free old space //get new space ptr = alloc_string (length); } if (ptr == NULL) { tprintf ("No memory to allocate string"); return *this; } strcpy(ptr, string); //copy string } else { if (ptr == NULL) ptr = alloc_string (1); //get space //got wrong size else if (strlen (ptr) != 0) { free_string(ptr); //free old space ptr = alloc_string (1); //get new space } if (ptr == NULL) { tprintf ("No memory to allocate string"); return *this; } *ptr = '\0'; //copy string } return *this;}/********************************************************************** * STRING::operator+ * * Concatenate 2 STRINGs. **********************************************************************/STRINGSTRING::operator+ ( //concatenationconst STRING & string //second string) const{ INT32 length; //length of 1st op STRING result; //concatenated string if (ptr == NULL) length = 0; else length = strlen (ptr); result.ptr = alloc_string (length + strlen (string.ptr) + 1); //total length if (result.ptr == NULL) { tprintf ("No memory to allocate string"); return result; } result.ptr[0] = '\0'; if (ptr != NULL) strcpy (result.ptr, ptr); if (string.ptr != NULL) //put together strcpy (result.ptr + length, string.ptr); return result;}/********************************************************************** * STRING::operator+ * * Concatenate char to STRING. **********************************************************************/STRINGSTRING::operator+ ( //concatenationconst char ch //char) const{ INT32 length; //length of 1st op STRING result; //concatenated string if (ptr == NULL) length = 0; else length = strlen (ptr); //total length result.ptr = alloc_string (length + 2); if (result.ptr == NULL) { tprintf ("No memory to allocate string"); return result; } if (ptr != NULL) strcpy (result.ptr, ptr); result.ptr[length] = ch; //put together result.ptr[length + 1] = '\0'; return result;}/********************************************************************** * STRING::operator+= * * Concatenate 2 strings putting the result straing back in the first **********************************************************************/STRING & STRING::operator+= ( //inplace catconst char *string //string to add) { INT32 length; //length of 1st op char * src; //source string if (string == NULL || string[0] == '\0') return *this; //unchanged if (ptr == NULL) length = 0; else length = strlen (ptr); //length of 1st op src = ptr; //temp copy //new length ptr = alloc_string (length + strlen (string) + 1); if (ptr == NULL) { tprintf ("No memory to allocate string"); ptr = src; return *this; } if (src != NULL) { strcpy(ptr, src); //copy old free_string(src); //free old one } strcpy (ptr + length, string); //add new return *this;}/********************************************************************** * STRING::operatot+= * * Concatenate a char t a string putting the result straing back in the string **********************************************************************/STRING & STRING::operator+= ( //inplace catconst char ch //char to add) { INT32 length; //length of 1st op char * src; //source string if (ch == '\0') return *this; //unchanged if (ptr == NULL) length = 0; else length = strlen (ptr); //length of 1st op src = ptr; //temp copy //new length ptr = alloc_string (length + 2); if (ptr == NULL) { tprintf ("No memory to allocate string"); ptr = src; return *this; } if (src != NULL) { strcpy(ptr, src); //copy old free_string(src); //free old one } ptr[length] = ch; //add new char ptr[length + 1] = '\0'; return *this;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -