C ++结构2D字符串成员初始化

时间:2014-04-07 17:24:49

标签: c++ arrays string initialization structure

#include<string>
#include<iostream>
using namespace std;

struct letter
{
    string lines[5];
}s[26];

int main()
{
    //struct letter s[25];
    s[0].lines =      // error while initializing here
    {
        "..*..",
        ".*.*.",
        ".***.",
        ".*.*.",
        ".*.*."
    };

    s[1].lines[5] =   // also if I do this
    {
        ".**..",
        ".*.*.",
        ".***.",
        ".*.*.",
        ".**.."
    };

  return 0;
}

点击此处: Ideone Link

我无法弄清楚这段代码有什么问题。 我尝试了很多方法。我甚至将结构成员更改为2d char数组,但是遇到了同样的问题。请帮忙!

编辑信息:

prog.cpp:在函数'int main()'中:
错误:在'{'标记之前预期的primary-expression
错误:预期';'在'{'标记之前 错误:在'{'标记之前预期的primary-expression
错误:预期';'在'{'标记之前

1 个答案:

答案 0 :(得分:0)

初始化s[26]数组的方式仅适用于声明。

以下是在代码中执行此操作的方法:

struct letter
{
    string lines[5];
};

letter s[26] =
{
    {
        "..*..",
        ".*.*.",
        ".***.",
        ".*.*.",
        ".*.*."
    },
    {
        ".**..",
        ".*.*.",
        ".***.",
        ".*.*.",
        ".**.."
    }
};

或者甚至更好,如果你真的不需要letter结构:

string letter[26][5] =
{
    {
        "..*..",
        ".*.*.",
        ".***.",
        ".*.*.",
        ".*.*."
    },
    {
        ".**..",
        ".*.*.",
        ".***.",
        ".*.*.",
        ".**.."
    }
};