也就是说,如果我的最大长度为13,则"Quite a long string"
将变成"Quite a lo..."
。此外,我不想破坏原始字符串-因此缩短的字符串必须是一个副本。
下面是我想出的(静态)方法。我的问题是:分配缩短字符串的内存的类是否也应负责释放它?现在我所做的是将返回的字符串存储在单独的“用户类”中,并将释放内存推迟到该用户类中。
const char* TextHelper::shortenWithPlaceholder(const char* text, size_t newSize) {
char* shortened = new char[newSize+1];
if (newSize <= 3) {
strncpy_s(shortened, newSize+1, ".", newSize);
}
else {
strncpy_s(shortened, newSize+1, text, newSize-3);
strncat_s(shortened, newSize+1, "...", 3);
}
return shortened;
}