【问题标题】:How to create and store string data in multidimensional array?如何在多维数组中创建和存储字符串数据?
【发布时间】:2020-10-30 05:20:04
【问题描述】:

如何使用指针在多维数组中创建和存储字符串数据?我的尝试是:

// I declaring row 3 and column 2 
string** arr = new string*[3][2]; // I am having issue in here

// I am trying to add data
arr[0] = {"first", "second"};

【问题讨论】:

  • 使用std::array<std::arrayr<std::string,2>,3> arr;
  • 你需要用new string()初始化每个元素
  • 网上有很多关于如何分配多维数组的例子。好的不使用指针,但我相信你也能找到。
  • @AlanBirtles,你介意给我看看这个例子吗?

标签: c++ arrays pointers


【解决方案1】:

初始化的第一行有错误。 如果您想避免任何错误,请像这样初始化它。

string** arr = new string*[3]; 
/* It will have count of rows of string you will have like in this statement 3 rows of string. */
// Now you will have to tell about columns for each row separately.

for(int i = 0; i < 3; i++) {
    arr[i] = new string[2]; // Here you are initializing each row has 2 columns
}

// Now write your code below...

【讨论】:

    【解决方案2】:

    你可以重写你的代码如下:

    string **arr = new string*[3]; // row 3
    
    for(unsigned i = 0; i < 3; i++)
        arr[i] = new string[2]();  // column 2
    
    arr[0][0] = "first"; arr[0][1] = "second";
    
    for(unsigned i = 0; i < 3; i++){. // yours ans
        for(unsigned j = 0; j < 2; j++)
            cout << arr[i][j] << " ";
        cout << '\n';
    
    }
    

    【讨论】:

      【解决方案3】:

      如果您希望能够像使用{"first", "second"} 那样初始化整个子数组,您很可能需要使用std::vectorstd::array,而不是手动为数组分配内存。除非您有非常具体的原因使用指针,否则它在向量中的外观如下:

      using str_vec = std::vector<std::string>;
      std::vector<str_vec> v(3, str_vec(2, ""));
      
      v[0] = {"first", "second"};
      

      但如果你真的需要指针,那么你必须先为“行”分配内存,然后为每个“列”分别分配:

      std::string** a = new std::string*[3]; 
      for(int i = 0; i < 3; ++i) {
          a[i] = new std::string[2];
      }
      

      之后,您可以一一填写值:

      a[0][0] = "first";
      a[0][1] = "second";
      

      完成后不要忘记删除所有这些数组。反过来,你首先需要删除所有列,然后是“行”:

      for(int i = 0; i < 3; ++i) {
          delete[] a[i];
      }
      delete[] a;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-29
        • 2017-09-06
        • 2020-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多