字符串类的创建(上)

在这里插入图片描述
在这里插入图片描述
接下来为DragonLib创建字符串类:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#include "dtstring.h"
#include <cstring>
#include <cstdlib>
#include "Exception.h"

using namespace std;


namespace DragonLib {

void String::init(const char* s)
{
    m_str = strdup(s);
    if(m_str)
    {
        m_length = strlen(m_str);
    }
    else
    {
        THROW_EXCEPTION(NoEnoughMemoryException,"No memory to create String object...\n");
    }
}

String::String()
{
    init("");
}

String::String(char c)
{
    char s[] = {c,'\0'};
    init(s);
}

String::String(const char* s)
{
    init(s ? s : "");
}

String::String(const String& s)
{
    init(s.m_str);
}

int String::length() const
{
    return m_length;
}

const char* String::str() const
{
    return m_str;
}

bool String::operator==(const String& s)const
{
    return (strcmp(m_str,s.m_str)==0);
}

bool String::operator==(const char* s)const
{
    return (strcmp(m_str,s)==0);
}

bool String::operator!= (const String& s) const
{
    return !(*this == s);
}
bool String::operator!= (const char* s)const
{
    return !(*this == s);
}

bool String::operator> (const String& s) const
{
    return (strcmp(m_str,s.m_str) > 0);
}
bool String::operator> (const char* s)const
{
    return (strcmp(m_str,s?s:"") > 0);
}
bool String::operator< (const String& s) const
{
    return (strcmp(m_str,s.m_str) < 0);
}
bool String::operator< (const char* s)const
{
    return (strcmp(m_str,s?s:"") < 0);
}
bool String::operator>= (const String& s) const
{
    return (strcmp(m_str,s.m_str) >= 0);
}
bool String::operator>= (const char* s)const
{
    return (strcmp(m_str,s?s:"") >= 0);
}
bool String::operator<= (const String& s) const
{
    return (strcmp(m_str,s.m_str) <= 0);
}
bool String::operator<= (const char* s)const
{
    return (strcmp(m_str,s?s:"") <= 0);
}

String String::operator+ (const String& s)const
{
    return (*this + s.m_str);
}
String String::operator+ (const char* s)const
{
    String ret;
    int len = m_length + strlen(s?s:"");
    char* str = reinterpret_cast<char*>(malloc(len+1));

    if(str)
    {
        strcpy(str,m_str);
        strcat(str,s?s:"");
        free(ret.m_str);
        ret.m_str=str;
        ret.m_length=len;
    }
    else
    {
        THROW_EXCEPTION(NoEnoughMemoryException,"No memory to add String values...\n");
    }
    return ret;

}
String& String::operator+= (const String& s)
{
    return (*this = *this + s);
}
String& String::operator+= (const char* s)
{
    return (*this = *this + s);
}

String& String::operator= (const String& s)
{
    return (*this = s.m_str);
}
String& String::operator= (const char* s)
{
    if(m_str != s)
    {
        char* str=strdup(s?s:"");
        if(str)
        {
            free(m_str);
            m_str=str;
            m_length = strlen(m_str);
        }
        else
        {
            THROW_EXCEPTION(NoEnoughMemoryException,"No memory to assign new String value...\n");
        }
    }
    return *this;
}
String& String::operator= (char c)
{
    char s[] = {c,'\0'};
    return (*this = s);
}
String::~String()
{
    free(m_str);
}
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 使用String类的toCharArray()方法可以将字符串转换为字符数组。例如:String str = "Hello World";char[] chars = str.toCharArray();可以使用Java语言中的String类创建字符串,并使用字符数组创建字符串。以下是创建字符串和字符数组的示例代码: 创建字符串: ```java String str = "Hello, world!"; // 字符串常量 String str2 = new String("Hello, world!"); // 使用字符串构造函数创建字符串 ``` 创建字符数组并将其转换为字符串: ```java char[] charArray = {'H', 'e', 'l', 'l', 'o', ',', ' ', 'w', 'o', 'r', 'l', 'd', '!'}; String str3 = new String(charArray); // 使用字符数组创建字符串 ``` 另外,您还可以使用String类中的toCharArray方法将字符串转换为字符数组: ```java String str4 = "Hello, world!"; char[] charArray2 = str4.toCharArray(); // 将字符串转换为字符数组 ``` ### 回答2: Java中,我们可以使用String类来创建字符串,而其中一种创建字符串的方式是使用字符数组。 在Java中,字符数组是一个包含字符元素的数据结构。我们可以使用字符数组来表示一个字符串。当我们需要创建一个新的字符串时,我们可以使用字符数组来构造它。 要使用字符数组创建字符串,我们首先需要定义一个字符数组变量,然后将字符元素赋值给数组的相应位置。在赋值完成后,我们可以使用String类的构造函数和字符数组作为参数来创建一个新的字符串对象。 例如,假设我们想要创建一个名为str的字符串,其值为"Hello, World!"。我们可以使用字符数组来实现: ``` char[] charArray = {'H', 'e', 'l', 'l', 'o', ',', ' ', 'W', 'o', 'r', 'l', 'd', '!'}; String str = new String(charArray); ``` 在上面的例子中,我们定义了一个名为charArray的字符数组,它包含了字符串"Hello, World!"的所有字符元素。然后,我们使用String类的构造函数将这个字符数组作为参数来创建一个新的字符串对象。最终,我们得到了一个值为"Hello, World!"的字符串str。 使用字符数组创建字符串的好处是可以对字符串进行灵活的操作,例如修改、遍历、拼接等。因为字符数组可以随意修改其中的元素,这使得对字符串的操作更加方便和高效。 总之,使用字符数组创建字符串是Java中创建字符串的一种常见方式。它允许我们通过定义字符数组,并将其作为参数传递给String类的构造函数来创建字符串对象。这种方式给与我们对字符串的灵活操作,并提供了多种字符串处理的方法。 ### 回答3: Java字符串中的String类提供了多种方法来创建字符串,其中一种方法是使用字符数组来创建字符串。 要使用字符数组创建字符串,首先需要定义一个char类型的数组,然后可以通过String类的构造方法将该数组转换为一个字符串对象。 以下是使用字符数组创建字符串的示例代码: ```java char[] charArray = {'H', 'e', 'l', 'l', 'o'}; String str = new String(charArray); ``` 在上面的代码中,我们定义了一个包含字符'H'、'e'、'l'、'l'、'o'的字符数组charArray。然后,我们使用String类的构造方法将该字符数组转换为一个字符串对象,存储在变量str中。 通过运行上面的代码,我们就可以得到一个字符串"Hello"。这个字符串与直接使用双引号创建字符串是一样的,可以用于各种字符串操作。 使用字符数组创建字符串的好处是,我们可以根据需求动态地修改字符数组的内容,然后通过创建新的字符串来反映这些更改。另外,使用字符数组创建字符串还可以方便地处理一些特定的字符串操作,例如从文件或网络流中读取字符数据并将其转换为字符串。 综上所述,通过字符数组创建字符串是使用String类的一种常见方法,它可以方便地处理字符串操作,并且可以根据需要进行动态修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值