字符串正确声明数组的数组

时间:2014-01-17 01:20:21

标签: c++ arrays string

我的程序中需要一个字符串数组。我这样宣布:

string edges[N][N] = {
{"0", "A", "0", "B", "E", "0", "0", "P1", "0"},
{"A", "0", "D", "I", "0", "0", "0", "0", "0"},
{"0", "D", "0", "0", "0", "H", "F", "0", "0"},
{"B", "I", "0", "0", "0", "H", "0", "0", "0"},
{"E", "0", "0", "0", "0", "0", "0", "P2", "0"},
{"0", "0", "H", "H", "0", "0", "0", "0", "P4"},
{"0", "0", "F", "0", "0", "0", "0", "0", "P3"},
{"0", "0", "0", "0", "0", "0", "0", "0", "0"},
{"0", "0", "0", "0", "0", "0", "0", "0", "0"},
};

没问题,当我尝试访问具有1个字母值(A或B等)的字符串时,但是如果我尝试访问具有2个字母值的字符串,例如edges[0, 7](值为“P1” ),programm将输出0.出了什么问题?
如果元素是A,B,C等单字母,它可以正常工作,但是在P1或P2时失败 完整的程序列表和工作程序在这里http://ideone.com/ZMiVPE

2 个答案:

答案 0 :(得分:1)

他这里在位置[0,8]显示值0,所以,这是正确的。好吧,这是对的。 数组将安排如下:

string edges[N][N] = {
{[0,0], [0,1], [0,2], [0,3], [0,4], [0,5], [0,6], [0,7], [0,8]},
  ....
[8,0], [8,1], [8,2], [8,3], [8,4], [8,5], [8,6], [8,7], [8,8]}}
};

答案 1 :(得分:0)

因为你想要7而不是8. C语言我们是0索引。