Първоначално съм Java програмист и много обичам синтаксиса, особено по отношение на обекта String
. С C++ се опитах да пресъздам метода toUpperCase()
, който Java има. Единственият проблем е, че винаги връща String
обект, който има празен/NULL char масив.
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