C++有没有亲亲会啊

有没有会啊?救命啊亲亲们!
1、实现重载的插入符函数,函数内,用下标运算符[ ]读取,并一个个输出单个字符,
字符之间输出一个空格,输出不换行。
2、执行 string s=””; 并用插入符输出其长度和内容。
3、执行 s= ” Care and diligence bring luck.”,用下标运算符[ ]修改第一个字符为大写
字母 K。分两行分别输出修改前后的字符串
4、设计并编写全局函数,生成一个指定长度的随机字符串(字符 ASCII 取值范围为
0x21 ~ 0x7E),并返回字符串的首地址。提醒:不得返回局部变量的指针。
5、随后利用上述该函数,生成内容随机的 string 对象 t,长度为 40 字节。调用
reverse()函数,生成倒序结果。分两行输出原始字符串和倒序后得到的字符串。单
独一行输出倒叙前后的字符串长度。
6、执行 s += t,输出 s 并换行。
7、编写 upper 函数,用 t 测试。
8、编写其它运算符函数:+,<,==。注意 operator==的要求是不区分大小写。Main
函数已经编写了测试代码。观察结果是否通过,若不通过,则调试并解决问题。
9、对比 C 语言的字符串操作,体会 mystring 类,在运算符重载后的字符串操作的便
利性。

img


string.h

img



//所有补充部分必须避免使用之前或之后用过的变量名,main函数中,不得在补充区域外修改代码
int main(int argc, _TCHAR* argv[])
{
    mystring s="";
    //补充完整,实现功能2,空串


    //功能2补充结束

    s = "Care and diligence bring luck.";
    //补充完整,实现功能3,[]运算符


    //功能3补充结束
    /****注意:功能4补充是全局函数,不在main内****/
    //补充完整,实现功能5(reverse)




    //功能5补充结束

    //补充完整,实现功能6 (s+=t)


    //功能6补充结束
    //main中以下代码不能修改!!!!
    //功能7
    cout<<"将t转换为大写:\t"<//

    //功能8
    int i;
    char testrelationstr[5][16] = { "Ab23", "ab23", "23", "", "a3494"};
    bool resulteq[5] = { 1, 1, 0, 0, 0};
    bool resultls[5] = { 0, 1, 0, 0, 1};
    s = testrelationstr[0];
    int count = 0;
    for(i = 0; i < 5; i++)
        count +=  (s == mystring(testrelationstr[i])) == resulteq[i];
    //通过统计结果相符的数量,判断==运算符是否正确
    cout<<"运算符==测试: "<< (count==5 ? "":"不")<<"通过"<0;
    for(i = 0; i < 5; i++)
        count +=  (s < mystring(testrelationstr[i])) == resultls[i];
    //通过统计结果相符的数量,判断<运算符是否正确
    cout<<"运算符<测试:  "<< (count==5 ? "":"不")<<"通过"<60], bufadd2[30];
    mystring tadd1 = genstr(bufadd1, 16), tadd2 = genstr(bufadd2, 30);
    assert(strlen(bufadd1) == 15);
    assert(strlen(bufadd2) == 29);

    //测试特殊的 += :两个操作数是同一个对象
    char testbuf[60];
    strcpy(testbuf, bufadd1);
    strcat(testbuf, bufadd1);
    mystring addresult1 = testbuf;
    cout<<"运算符+=测试: "<<( (addresult1 == (tadd1 += tadd1))? "":"不" )<<"通过"<31);
    assert(strlen(bufadd1) == 30);
    mystring tadd4 = tadd1 + tadd2;

    strcat(bufadd1, bufadd2);
    mystring addresult2 = bufadd1;
    cout<<"运算符+测试1: "<<( (addresult2 == tadd1 + tadd2)? "":"不" )<<"通过"<40);
    mystring addresult3 = tadd1 + tadd2;
    //60是头文件mystring中指定的长度
    cout<<"运算符+测试2: 长度"<<(addresult3.len() >= 60 ? "错误":"正确")<0;
}

可以使用如下代码实现功能2:

#include <iostream>
#include <string>

using namespace std;

int main(int argc, _TCHAR* argv[]) {
    mystring s("");
    cout << "Length: " << s.my_size() << endl;
    cout << "Content: " << s << endl;
    return 0;
}

在上述代码中,我们使用了mystring类型的默认构造函数创建了一个空的字符串s,并使用my_size()函数和重载的插入符分别输出了字符串s的长度和内容。

需要注意的是,由于题目要求补充部分不能使用之前或之后用过的变量名,因此在代码中我们使用了mystring类型代替string类型,避免与之前的代码重复。同时,我们也根据题目要求使用了my_size()函数

参考:https://blog.csdn.net/ccc369639963/article/details/122874271

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^