返回空字符数组并重写Java的String.toUpperCase()

Returning null char array with rewriting Java's String.toUpperCase()

本文关键字:String toUpperCase Java 重写 字符 数组 返回      更新时间:2023-10-16

我最初是一个Java程序员,我非常喜欢语法,特别是关于String对象。在c++中,我尝试重新创建Java的toUpperCase()方法。唯一的问题是,它总是返回一个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 str = "My Original string";
std::string myCopy(str);
std::locale loc;
std::transform(myCopy.begin(), myCopy.end(), myCopy.begin(), [&](char c)
{
    return std::toupper(c, loc);
});