在类构造函数内初始化 Dev C 中的字符串数组

Posted

技术标签:

【中文标题】在类构造函数内初始化 Dev C 中的字符串数组【英文标题】:Initialize array of strings in Dev C inside of class constructor 【发布时间】:2013-04-13 00:00:56 【问题描述】:

我在尝试初始化字符串数组时遇到了困难。我正在使用一个具有不同方法的类:一个旨在为数组充电,另一个旨在消除数组的元素等等......我需要在类中的每个方法中使用相同的数组。

问题是我需要模拟数组(队列)并显示其元素,因为它们被添加到队列或从队列中删除,我在尝试初始化数组以显示任何内容而不是随机字符时遇到问题.

这是我正在尝试做的代码......

class Queue

  public:
         char array[3][6]; //array of 3 positions holding up to 6 characters each
         int front, rear, max;

         Queue()
         
             front=0;
             rear=0;
             max=3;
             array="","",""; //trying to initialize to blank spaces, here's the issue!
         

         void add_element()
          

         void delete_element()
          

         void print_on_screen()
          
   ;
   main()
     

我通过使用一维 char 数组使其工作,为 3 个位置中的每一个输入一个数字,但实际上需要它来处理多个字符。

【问题讨论】:

假设 C++03,***.com/questions/2409819/…(以及更多在本页相关列中找到) 实际上没有帮助:/我在发布之前阅读了一些建议,但它们初始化了一维数组......我正在尝试初始化一个二维数组 C++03 中不能初始化数组数据成员的事实仍然存在。你在用 C++11 吗? 不... C++03。我在前面的问题中读到,您可以“艰难地”初始化一个数组,这意味着按位置初始化一个位置 (array[0]="blah"; array[1]="blah"; array[2]="blah" ),但是这种“硬方法”也不起作用,至少不适用于我的二维数组:/我想我会放弃这种方法并尝试以其他方式解决问题...... 那么您应该使用strncpystd::string 【参考方案1】:
char array[3][6]

是一个二维字符数组。这个

array="","","";

正在尝试初始化一个大小为 3 的一维 字符串数组

´a´"a" 是不同的东西。第一个是字符。第二个是字符串。

如果你想将 char 数组初始化为特定的东西,那么你可以这样做

char array[3][3] = 'a',' ','a', 'a','a','a','a','a','a';
//                       ^^^
//                        blank space

但是请记住,将 char 初始化为空格与将 int 初始化为 0 不同。0 是 int 的默认值。这就是为什么在构造某些东西时通常将 int 初始化为 0 的原因。表示它们仍然具有默认值。

我认为您应该将其初始化为零。像这样。

     
         front=0;
         rear=0;
         max=3;
         array[3][6] = 0;
     //                ^^^^  
     

最后"" 不是空格。这个是" "

【讨论】:

感谢您的回答和建议...刚刚尝试以这种方式初始化(​​零),但它也不起作用:/

以上是关于在类构造函数内初始化 Dev C 中的字符串数组的主要内容,如果未能解决你的问题,请参考以下文章

动态数组C风格字符串字符串字面值

在c ++中初始化构造函数中的c数组时出错

在类中声明数组并在构造函数中初始化

C++ 数组构造函数

关于C语言结构体构造函数初始化的问题?

C ++ - 在类中构造对象