C++作业4.0

目录

要求

思路

代码


要求

自定义一个String类(注意是大写,不是自带的string),要求实现下面的功能
class String{

public:
    String(const string &s); //构造函数
    ~ String(void){} //析构函数

    //友元运算符重载
    friend String operator +(const String &s1,const String &s2);
    friend bool operator >(const String &s1,const String &s2);
    friend bool operator <(const String &s1,const String &s2);
    friend bool operator ==(const String &s1,const String &s2);

    //成员函数运算符
    bool operator !=(const String &other);

    //赋值运算符
    String& operator =(const String &s); 
    // 类型转换
    operator string(); //String转string

    //成员函数
    string get_str();

private:
    string str;
};
要求:比较字符串的长度

思路

一、整体功能概述

 

定义了一个名为String的类,用于模拟字符串的一些操作。通过重载运算符和提供一些成员函数,实现了字符串的拼接、比较、赋值以及类型转换等功能。在main函数中,创建了两个String对象,并对这些运算符和函数进行了测试。

 

二、类的分析

 
  1. String类:
    • 成员变量
      • str:一个string类型的变量,用于存储实际的字符串内容。
    • 构造函数
      • String(const string& s):接受一个string类型的参数,用于初始化str成员变量。
    • 析构函数
      • ~String():空析构函数,目前没有特殊的资源释放操作。
    • 友元函数
      • operator +(const String& s1, const String& s2):重载了加法运算符,用于拼接两个String对象,返回一个新的String对象,其内容是两个操作数的字符串拼接。
      • operator >(const String& s1, const String& s2)operator <(const String& s1, const String& s2)operator ==(const String& s1, const String& s2):分别重载了大于、小于和等于运算符,用于比较两个String对象的长度。
    • 成员函数
      • operator!=(const String& other):重载了不等于运算符,用于比较两个String对象的长度是否不相等。
      • operator =(const String& s):重载了赋值运算符,用于将一个String对象赋值给另一个String对象。
      • operator string():类型转换运算符,将String对象转换为string类型。
      • get_str() const:返回str成员变量的值,即当前String对象所存储的字符串。
 

三、主函数分析

 
  1. 定义了一些string类型的变量strstr2,并初始化它们为 "hello" 和 "world!"。
  2. 创建了两个String对象s1s2,分别使用构造函数进行初始化。
  3. 输出s1s2的内容。
  4. 输出s1 + s2的结果,即两个字符串的拼接。
  5. 使用条件运算符判断s1s2的大小关系、相等关系和不相等关系,并输出结果。

代码

#include <iostream>
#include <string>
#include <string.h>

using namespace std;

class String {

public:
    String(const string& s); //构造函数
    ~String(){}//析构函数

    //友元运算符重载
    friend String operator +(const String& s1, const String& s2);
    friend bool operator >(const String& s1, const String& s2);
    friend bool operator <(const String& s1, const String& s2);
    friend bool operator ==(const String& s1, const String& s2);

    //成员函数运算符
    bool operator !=(const String& other);

    //赋值运算符
    String& operator =(const String& s);
    // 类型转换
    operator string(); //String转string

    //成员函数
    string get_str() const;

private:
    string str;
};

String::String(const string& s):str(s){}

String operator +(const String& s1, const String& s2)
{
    return s1.str+s2.str;
}

bool operator >(const String& s1, const String& s2)
{
    return s1.str.length() > s2.str.length();
}

bool operator <(const String& s1, const String& s2)
{
    return s1.str.length() < s2.str.length();
}

bool operator ==(const String& s1, const String& s2)
{
    return s1.str.length() == s2.str.length();
}

bool String::operator !=(const String& other)
{
    return this->str.length() != other.str.length();
}

String& String::operator =(const String& s)
{
    str = s.str;
    return *this;
}

String::operator string()
{
    return str;
}

string String::get_str() const
{
    return str;
}

int main()
{
    string s_condition;
    string str = "hello";
    string str2 = "world!";
    String s1 = str;
    String s2(str2);

    cout << "s1: " << s1.get_str() << endl;

    cout << "s2: " << s2.get_str() << endl;

    cout << "s1+s2: " << (s1 + s2).get_str() << endl;

    (s1 > s2) ? s_condition = "True" : s_condition = "False";
    cout << "s1>s2? " << s_condition << endl;

    (s1 < s2) ? s_condition = "True" : s_condition = "False";
    cout << "s1<s2? " << s_condition << endl;

    (s1 != s2) ? s_condition = "True" : s_condition = "False";
    cout << "s1!=s2? " << s_condition << endl;

    (s1 == s2) ? s_condition = "True" : s_condition = "False";
    cout << "s1==s2? " << s_condition << endl;

    return 0;
}
Tesseract 4.0 是一个开源的OCR(Optical Character Recognition)引擎,用于从图像或扫描的文档中识别和提取文字信息。Tesseract最初是由惠普实验室开发的,后来由Google维护和开源。Tesseract 4.0是Tesseract的最新版本,带来了一些重要的改进和新功能。 Tesseract 4.0引入了一个新的神经网络架构,称为LSTM(Long Short-Term Memory)。这种架构在OCR任务中表现出色,提高了精度和准确性,尤其是对于复杂的字体和布局。与之前的版本相比,Tesseract 4.0能够更好地识别不同大小、字体和方向的文本。 除了LSTM,Tesseract 4.0还引入了一些其他改进。它可以处理多种语言,并且支持超过100种语言的OCR识别。这使得Tesseract成为全球范围内使用最广泛的OCR引擎之一。同时,Tesseract 4.0还增强了对图像预处理和文本后处理的支持,以提高识别的准确性和可正确解释的识别结果。 Tesseract 4.0还提供了一组API,以便开发人员可以集成Tesseract OCR引擎到他们的应用程序中。这些API可以在各种编程语言中使用,包括Python、Java和C++,使得开发OCR应用程序变得更加快捷和方便。 总的来说,Tesseract 4.0是一个功能强大、高度准确、可扩展和易于使用的OCR引擎。它在处理复杂文本布局和多语言识别方面表现出色,适用于各种OCR应用领域,包括扫描文档的数字化、图像识别和文本提取等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值