在数组中存储元素时出错

时间:2016-05-10 13:33:12

标签: c++ arrays string c++11

我正在尝试将字符串类型的数字存储到2D数组中。将字符串存储为数字时,它根本不存储,而是显示0000

while(m<sm)             /*storing string into integer array */
 {
    if(isdigit(input4[m]))      /* string to 2D array conversion*/
    {
        K=input4[m]-'0';
        K1=input4[m+2]-'0'; // changed from m+1 to m+2
        cout<<K<<"\t"<<K1;
       arr[K][K1]=2;
    cout<<"\n";
    }

    m++;

 }

 for(int i =0; i<input1 ;i++){
    for(int j =0;j<input2;j++){
        cout<<arr[i][j];
    }
    cout<<endl;
 }

INPUT: 2,1,2,2,3,2,2,2,2,3,2,3,3,3,1,3

输出: 2 1 1-4 2 2 2 -4 3 2 2 -4 2 2 2 -4 2 3 3 -4 2 3 3 -4 3 3 3 -4 1 3 3-7 0000 0001 0111 0011

我的问题是第二列是什么?它应该是: 2 1 2 2 3 2 等等,因为它们是K和K1的值。我想通过将两个常规元素与矩阵的坐标对话,将字符串形式的元素存储到2D数组中,然后我想在坐标K和K1处存储1。它仅在6个坐标上存储1,但必须按照输入在8个坐标上。

1 个答案:

答案 0 :(得分:0)

问题在于K1是否定的(如您所见),这意味着您拥有arr[K][K1]的越界访问权限。显然input4[m + 1]不是数字,它似乎是用你的数字分隔的逗号。