2017-07-02 150 views
-2

我已经写了代码来存储二维数组中的值,如下格式,它工作正常。C++初始化和填充变量的二维数组

//Create array 
double MyPoints[25][3] = {{4,3,1},{6,4,1},{7,3,1},{7,6,1},{6,7.5,1},{3,6,1},{4,5,2},{5,6.5,2},{6,9,2},{3.5,8,2},{6,5,3},{6,6,3},{9,4,3},{9,5,3},{8,4,4},{9.5,3,4},{10,4,4},{11,6,4},{9,6,4},{8,7,5},{10,7,5},{11,9,5},{8,10,5}} ; 
cout << "Array Filled" << endl; 

// Print Array 
    for (int c = 0; c < 25; c++) 
    { 
     for (int d = 0; d < 3; d++) 
     { 
      cout << MyPoints [c][d] << " Hellow "; 
     } 
     cout << endl; 
    } 

,但我想数组值存储在变量,然后分配变量(内举行阵列值),以填补MyPoints阵列,这是行不通的!。

String MyVar = {{4,3,1},{6,4,1},{7,3,1},{7,6,1},{6,7.5,1},{3,6,1},{4,5,2},{5,6.5,2},{6,9,2},{3.5,8,2},{6,5,3},{6,6,3},{9,4,3},{9,5,3},{8,4,4},{9.5,3,4},{10,4,4},{11,6,4},{9,6,4},{8,7,5},{10,7,5},{11,9,5},{8,10,5}} ; 

double MyPoints [25][3] = MyVar ; 
cout << "Array Filled" << endl; 

我做错了什么?如何纠正它。

+1

没有标准C++中的'String'类型。你能否澄清你想要达到的目标?请参考[tour](https://stackoverflow.com/tour)并阅读[帮助页面](https://stackoverflow.com/help)。 – Ron

+1

为什么你想要一个单独的变量?支撑初始值设定项列表没有类型,所以这个工作的唯一方法就是如果'MyVar'是一个二维数组,但不需要'MyPoints'了... – Rakete1111

+0

我需要MyVar,导致文本并非如我所写的那样是静态的,但是本文“{{4,3,1},{6,4,1},{7,3,1},{7,6,1},{6,7.5,1 },{3,6,1},{4,5,2},{5,6.5,2},{6,9,2},{3.5,8,2},{6,5,3}, {6,6,3},{9,4,3},{9,5,3},{8,4,4},{9.5,3,4},{10,4,4},{11 ,6,4},{9,6,4},{8,7,5},{10,7,5},{11,9,5},{8,10,5}}; “Generated从另一个代码。 –

回答

0
#include <iostream> 

int main() 
{ 
    double MyPoints[25][3] = {{ 
     0, 
    }}; 

    std::string text = "{4,3,1},{6,4,1},{7,3,1},{7,6,1},{6,7.5,1},{3,6,1},{4,5,2},{5,6.5,2},{6,9,2},{3.5,8,2},{6,5,3},{6,6,3},{9,4,3},{9,5,3},{8,4,4},{9.5,3,4},{10,4,4},{11,6,4},{9,6,4},{8,7,5},{10,7,5},{11,9,5},{8,10,5}"; 


    for (int c = 0; c < 25; c++) 
    { 
     std::sscanf(text.c_str(), "{%lf,%lf,%lf},", &MyPoints[c][0], &MyPoints[c][1], &MyPoints[c][2]); 
     text = text.substr(text.find("},") + 2); 
    } 
    // Print Array 
    for (int c = 0; c < 25; c++) 
    { 
     for (int d = 0; d < 3; d++) 
      std::cout << MyPoints[c][d] << " Hellow "; 
     std::cout << std::endl; 
    } 
} 

没有使用正则表达式或stringstream(几乎C,而不是C++)的代码。您还可以通过std::cin >> M[x][y]M[x][y]=value修改二维数组的值。

+0

HJ S ..谢谢你的回应,我会试试这段代码并给你一个反馈。 –

+0

HJ S ..为什么要用“{%lf,%lf,%lf}, “? –

+0

您可以在此找到scanf语法(http://en.cppreference.com/w/cpp/io/c/fscanf)。我更喜欢'''在C++中使用'scanf' /'sscanf',但scanf/printf是简单的工具处理格式化字符串。 –