【问题标题】:input a string into a 2d array while also adding different chars inbetween将字符串输入到二维数组中,同时在其间添加不同的字符
【发布时间】:2013-04-04 03:26:13
【问题描述】:

我正在尝试制作棋盘游戏。我必须输入一个 .txt 文件并使其几乎成为一个网格

  F.F  
  ...  
.......
SSSSSSS
SSSSSSS
  SSS  
  SSS  

然后让它出来

7     F-.-F
      |\|/|
6     .-.-.
      |/|\|
5 .-.-.-.-.-.-.
  |/|\|/|\|/|\|
4 S-S-S-S-S-S-S
  |/|\|/|\|/|\|
3 S-S-S-S-S-S-S
      |\|/|
2     S-S-S
      |/|\|
1     S-S-S
  a b c d e f g

这在某种程度上是我目前所拥有的,但我只是迷失了如何在输入信息之间添加字符

board.h的一部分

class BoardSet {
public:

    void startingBoard(std::string line, int row);
    void print();

private: 
char board[6][6];

};

board.cpp 的一部分

void BoardSet::startingBoard(std::string line, int row)
{
for(int i = 0; i < 7; i++)
{
    board[row][i] = line[i];

}

}

void BoardSet::print()
{
int row = 7;

for(int i = 0; i < 7; i++)
{
    for(int j = 0; j < 7;j++)
    {
        cout << board[i][j];
    }
    cout << endl;
}

}

main.cpp 的一部分

void initalizeBoard(istream& in, BoardSet& board)
{
string line;
int row = 0;
getline(in, line);
while(in)
{
    board.startingBoard(line, row);
    row++;
    getline(in, line);

}
board.print();


}

我需要的只是一些指导或一个简单的例子,我可以从那里得到它,我完全被难住了,不知道该怎么做。

【问题讨论】:

  • 格式好像是固定的。使用另一个数组,比如output_board[14][13],将输入复制到新数组中的对应位置。
  • 但是如何将第一个数组添加到另一个数组中并在其间添加字符?
  • 如果输入文件格式像帖子中的示例一样固定,则使用const int pos[7][7]将位置从input_board[7][7]映射到output_board[13][13]

标签: c++ arrays 2d output


【解决方案1】:
char board[6][7];

for(int i = 0; i < 7; i++)
{
    for(int j = 0; j < 7;j++)
    {
        cout << board[i][j];
    }
    cout << endl;
}

您的数组有 6 个项目,每个项目有 7 个深度! 但你是在循环 7 x 7?

还是我没抓住重点?

我看不到您在 txt 文件中读取的位置。

我不相信...

void BoardSet::startingBoard(std::string line, int row)
{
for(int i = 0; i < 7; i++)
{
    board[row][i] = line[i];

}

}

我认为这必须刹车......因为你循环了 7 次...... 0,1,2,3,4,5,6......而且你只是填充数组的第一个维度

试试这个...

        void BoardSet::setupBoard() // edit
        {
        for(int i = 0; i < 6; i++)
        {
            for(int j = 0; j < 7;j++)
            {
                board[i][j] = line[i]; ////////   board[i][j] = line[i];
            }
        }
        }

        void BoardSet::startingBoard(std::string line, int row)
        {
           for(int i = 0; i < 6; i++) // 6 not 7
           {
              board[row][i] = line[i];

           }
}    

    void BoardSet::print()
    {
    int row = 7;

    for(int i = 0; i < 6; i++)
    {
        for(int j = 0; j < 7;j++)
        {
            cout << board[i][j];
        }
        cout << endl;
    }

【讨论】:

  • 我确实在数组上犯了一个错误,应该将它设置为board[6][6],所以它是正确的。我确实包含了读取文件的函数。是void initalizeBoard(istream&amp; in, BoardSet&amp; board)谢谢你的建议
猜你喜欢
  • 2016-05-29
  • 1970-01-01
  • 2017-11-08
  • 1970-01-01
  • 2016-10-19
  • 1970-01-01
  • 2017-04-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多