gpt4 book ai didi

c++ - 如何在构造函数中初始化char

转载 作者:行者123 更新时间:2023-12-02 09:48:43 25 4
gpt4 key购买 nike

    #include <iostream>
using namespace std;

class MyClass
{
private :
char str[848];

public :

MyClass()
{

}

MyClass(char a[])
{
str[848] = a[848];
}

MyClass operator () (char a[])
{
str[848] = a[848];
}

void myFunction(MyClass m)
{

}

void display()
{
cout << str[848];
}
};

int main()
{
MyClass m1; //MyClass has just one data member i.e. character array named str of size X
//where X is a constant integer and have value equal to your last 3 digit of arid number
MyClass m2("COVID-19") , m3("Mid2020");
m2.display(); //will display COVID-19
cout<<endl;
m2.myFunction(m3);
m2.display(); //now it will display Mid2020
cout<<endl;
m3.display(); //now it will display COVID-19
//if your array size is even then you will add myEvenFn() in class with empty body else add myOddFn()
return 0;

}

我不能使用 string,因为有人告诉我不要这样做,因此,我需要知道如何制作它才能显示所需的输出

最佳答案

如何在构造函数中初始化char数组?

  • 使用循环逐元素复制元素:
  • MyClass(char a[])  
    {
    //make sure that sizeof(a) <= to sizeof(str);
    // you can not do sizeof(a) here, because it is
    // not an array, it has been decayed to a pointer

    for (int i = 0; i < sizeof(str); ++i) {
    str[i] = a[i];
    }
    }
  • 使用std::copy中的<algorithm>
  • const int size = 848;
    std::copy(a, a + size, str);

    如果需要使用 std::copy,则首选 strcpy而不是 strcpy,而不是 strncpy。您可以为其提供大小,以帮助防止错误和缓冲区溢出。
    MyClass(char a[])  
    {
    strncpy(str, a, sizeof(str));
    }
  • 使用库中的std::array。它具有多种优势,例如,您可以像普通变量一样直接分配它。示例:
  • std::array<char, 848> str = {/*some data*/};
    std::array<char, 848> str1;
    str1 = str;

    关于c++ - 如何在构造函数中初始化char,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62382187/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com