C ++无法从2D字符串数组中读取

时间:2015-04-20 11:17:18

标签: c++ arrays

这种感冒真的很明显,但我在大约15年内没有做过C ++,所以提前感谢。 我有一个2D数组的字符串,当我从它读取时,我得到这个: 0x22fc90

这是我的代码,任何想法?

std::string results[3][3] = {  
                 {"Draw", "Win", "Lose"} ,   /*  initializers for row indexed by 0 */
                 {"Lose", "Draw", "Win"} ,   /*  initializers for row indexed by 1 */
                 {"Win", "Lose", "Draw"}   /*  initializers for row indexed by 2 */
                };
cout << "It's a " << results[choice,compChoice];

choice和compChoice是整数

5 个答案:

答案 0 :(得分:1)

使用results[choice][compChoice]访问数组。

那是因为二维数组实际上是数组的数组。

首先,您需要进入results[choice],然后从中选择[compChoice]

答案 1 :(得分:1)

choice,compChoice只评估为compChoice,因此您只需将指针输出到choiceresults数组的开头。请改用results[choice][compChoice]

答案 2 :(得分:1)

结果是一个数组数组。尝试通过

访问
results[choice][compChoice]

结果[选择]&#34;返回&#34;您可以使用另一个[]运算符访问的数组。据我所知,在一对括号中不支持多个索引。

答案 3 :(得分:1)

例如C ++语法和多维数组的C#语法之间存在差异。您在此声明中撰写的与访问数组元素相关的内容

cout << "It's a " << results[choice,compChoice];

在C#中有效并且是你的意思。

在C ++中这句话

cout << "It's a " << results[choice,compChoice];

也有效,但其含义不同。在下标运算符results[choice,compChoice]中使用了所谓的逗号运算符,实际上它等同于results[compChoice],除了不会计算第一个子表达式。所以results[compChoice]给出了一行二维数组,operator<<输出了它的地址。

您想要的是以下

cout << "It's a " << results[choice][compChoice];

答案 4 :(得分:0)

谢谢大家。很高兴这是一个语法问题我不是完全忽略了这一点!