Библиотека String  1.0
Own String library. Лабораторная работа ФБИТ ИТМО
Функции
Файл identstr.cpp

Реализация методов класса "Строка-идентификатор". Подробнее...

#include <iostream>
#include <cstring>
#include "own/string.h"
#include "own/identstr.h"

См. исходные тексты.

Функции

IdentStr own::operator& (const IdentStr &pobj1, const IdentStr &pobj2)
 
IdentStr own::operator& (const IdentStr &pobj1, const char *pobj2)
 
IdentStr own::operator& (const char *pobj1, const IdentStr &pobj2)
 

Подробное описание

Реализация методов класса "Строка-идентификатор".

Данный файл содержит в себе реализации методов производного от "Строка" класса "Строка-идентификатор"

См. определение в файле identstr.cpp

Функции

◆ operator&() [1/3]

IdentStr own::operator& ( const char *  pobj1,
const IdentStr pobj2 
)

Объединение строк

Возвращает
Строка, содержащая все символы первой строки и символы второй строки, отсутствующие в первой

См. определение в файле identstr.cpp строка 144

145 {
146  IdentStr tmp1(pobj1);
147  if (tmp1.len == 0) {
148  return IdentStr(0);
149  }
150  return tmp1 & pobj2;
151 }

◆ operator&() [2/3]

IdentStr own::operator& ( const IdentStr pobj1,
const char *  pobj2 
)

Объединение строк

Возвращает
Строка, содержащая все символы первой строки и символы второй строки, отсутствующие в первой

См. определение в файле identstr.cpp строка 104

105 {
106  if (pobj1.len == 0) {
107  IdentStr tmp(pobj2);
108  return tmp;
109  }
110  int pobj2len = strlen(pobj2);
111 
112  bool check[256];
113  memset(check,0,256);
114  for (int i = 0; i < pobj1.len; i++) {
115  check[pobj1.pCh[i]] = true;
116  }
117  char* tmp2 = new char[pobj2len];
118  int j = 0;
119  for (int i = 0; i < pobj2len; i++) {
120  if (!((pobj2[i] >= 'a' && pobj2[i] <= 'z') || (pobj2[i] >= 'A' && pobj2[i] <= 'Z') ||
121  (pobj2[i] >= '0' && pobj2[i] <= '9') || (pobj2[i] == '_'))) {
122  std::cout << "Bad String, pobj2[" << i << "] = " << pobj2[i] << std::endl;
123  IdentStr tmp(0);
124  return tmp;
125  }
126 
127  if (!check[pobj2[i]]) {
128  tmp2[j++] = pobj2[i];
129  }
130  }
131  IdentStr tmp(pobj1.len + j);
132  int i = 0;
133  j = 0;
134  while (i < pobj1.len)
135  tmp.pCh[i++] = pobj1.pCh[j++];
136  j = 0;
137  while (i < tmp.len)
138  tmp.pCh[i++] = tmp2[j++];
139  std::cout << "IdentStr operator&(const IdentStr& pobj1, const char* pobj2)" << std::endl;
140  delete[] tmp2;
141  return tmp;
142 }

◆ operator&() [3/3]

IdentStr own::operator& ( const IdentStr pobj1,
const IdentStr pobj2 
)

Объединение строк

Возвращает
Строка, содержащая все символы первой строки и символы второй строки, отсутствующие в первой

См. определение в файле identstr.cpp строка 77

78 {
79  bool check[256];
80  memset(check,0,256);
81  for (int i = 0; i < pobj1.len; i++) {
82  check[pobj1.pCh[i]] = true;
83  }
84  char* tmp2 = new char[pobj2.len];
85  int j = 0;
86  for (int i = 0; i < pobj2.len; i++) {
87  if (!check[pobj2.pCh[i]]) {
88  tmp2[j++] = pobj2.pCh[i];
89  }
90  }
91  IdentStr tmp(pobj1.len + j);
92  int i = 0;
93  j = 0;
94  while (i < pobj1.len)
95  tmp.pCh[i++] = pobj1.pCh[j++];
96  j = 0;
97  while (i < tmp.len)
98  tmp.pCh[i++] = tmp2[j++];
99  std::cout << "IdentStr operator&(const IdentStr& pobj1, const IdentStr& pobj2)" << std::endl;
100  delete[] tmp2;
101  return tmp;
102 }