Я изначально программист на Java, и мне очень нравится синтаксис, особенно в отношении объекта String
. В C ++ я попытался воссоздать toUpperCase()
метод, который есть в Java. Единственная проблема заключается в том, что он всегда возвращает объект String
, который имеет пустой массив символов / NULL.
String String::toUpperCase()
{
char *a = new char[this->length + 1];
memset(a, 0, this->capacity + 1);
memcpy(a, this->characters, this->length);
for (int i = 0; i < strlen(this->characters); i++)
{
toupper(a[i]);
}
return *new String(a);
}
std::string
в целом. Эта функция приводит к утечке памяти при каждом вызове. Также прочтите документацию дляtoupper
. - person chris   schedule 18.03.2014new
, в C ++ вам следует по возможности избегать этого (без GC). - person crashmstr   schedule 18.03.2014return String(a);
вместо 'return * new String (a);' и использовать умный указатель наa
или, еще лучше, наstd::vector
); Кроме того, перестаньте писатьthis->
. В этом нет необходимости. Также рассмотрите возможность использованияstd::fill
вместоmemset
иstd::copy
вместоmemcpy
. - person utnapistim   schedule 18.03.2014