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

C++ cannot read from 2D string array

本文关键字:字符串 数组 读取 2D C++      更新时间:2023-10-16

这种寒冷真的很明显,但我大约 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 是整数

例如,

多维数组的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];

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

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

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

choice,compChoice的计算结果只是compChoice,所以你只是输出指向results中第 choice 个数组开头的指针。请改用results[choice][compChoice]

结果是一个数组数组。尝试通过以下方式访问

results[choice][compChoice]

所以 results[choice] "返回"一个数组,你可以用另一个 [] 运算符访问该数组。据我所知,一对括号不支持多个索引。

谢谢大家。我很高兴这是一个语法问题,我不是完全错过了重点!