Чтобы узнать больше о внутренней работе c ++, я решил написать свой собственный класс строк.Однако я застрял на функциях .toUpper()
и .toLower()
.Вот мой код
Text& toUpper(){
char* c = this->str;
while(*c != 0, c++){
if((*c >= 'a') && (*c <= 'z')){
*c = *c - 32;
std::cout << *c << std::endl;
}
}
return *this;
}
Я выделил линию, которая вызывает ошибку сегментации, до *c = *c - 32
, но я не понимаю, почему это может вызвать проблемы.Я пытался (char)(*c - 32)
, но это не сработало.Кроме того, это не ограничивающая проблема, потому что ничего не получается.Есть идеи?
Обновление: Мой конструктор
Text(char* str){
this->str = str;
this->updateLength(); // glorified strlen
}
Определение моего указателя
private:
char* str;
int len;