【问题标题】:Initializing a number and a char to a 2D array将数字和字符初始化为二维数组
【发布时间】:2015-10-06 04:14:50
【问题描述】:

我必须实现一副带有数字和字母的卡片。这是我到目前为止所做的:

string deck [6][6] =
{
    {1A, 1B, 1C, 1D},
    {2A, 2B, 2C, 2D},
    {3A, 3B, 3C, 3D},
    {4A, 4B, 4C, 4D},
    {  ,   ,   ,   };

};
int main ()
{
   cout << deck[0][0] << endl;
}

我得到一个错误:

整数常量上的后缀“A”无效

【问题讨论】:

    标签: arrays numbers 2d character initializing


    【解决方案1】:

    您收到此错误是因为您需要将字符串括在双引号中。如果你想使用静态初始化/声明,它应该看起来像这样:

    std::string deck[4][4] = {
        { "1A", "1B", "1C", "1D"}, 
        { "2A", "2B", "2C", "2D"}, 
        { "3A", "3B", "3C", "3D"}, 
        { "4A", "4B", "4C", "4D"}
    };
    

    您可以使用两个嵌套的for 循环来显示卡片组的全部内容:

    for (int r=0; r < 4; ++r) {
        for (int c=0; c < 4; ++c) {
            if (c > 0) {
                cout << " ";
            }
            cout << deck[r][c];
        }
        cout << "\n";
    }
    

    【讨论】:

    • 好的,谢谢。显示数组中的所有内容,是不是一定要嵌套循环?
    • 是的,或者您可以像在 OP 中所做的那样访问单个元素,例如deck[0][0].
    • 我需要显示所有内容而不用写deck [][] 36次
    • 错误:'std::string [6][6] {aka std::basic_string [6][6]}'| 的初始化程序太多
    • 我的答案涵盖了4x4 甲板,我将由您决定将其扩展到6x6 或您需要的任何实际尺寸。
    猜你喜欢
    • 2016-11-12
    • 2014-05-14
    • 2011-06-04
    • 1970-01-01
    • 2011-09-29
    • 1970-01-01
    • 1970-01-01
    • 2021-01-19
    • 1970-01-01
    相关资源
    最近更新 更多