【问题标题】:Reading a 2d array with blank spaces into char将带有空格的二维数组读入char
【发布时间】:2014-06-04 02:04:43
【问题描述】:

我有一个代表地图/迷宫的二维数组,如下所示:

+-+-+-+-+-+
|         |
+-+ +-+ + +
|     | | |
+ +-+-+ + +
| |     |  
+-+ +-+-+-+

我有以下代码用于阅读该地图:

char mapa[hlimit][wlimit];
for(int j=0;j<hlimit;j++)
    cin>>mapa[j];

也试过这个:

char mapa[hlimit][wlimit];
for(int j=0;j<hlimit;j++)
    for(int k=0;k<wlimit;k++)
        cin>>mapa[j][k];

在我进入整个地图之前,for 循环结束的两种方式。我尝试用点替换地图中的空格,并且输入完美无缺。那么,如何使用空格进行输入?我也试过 cin.getline(mapa[j],wlimit) ,对我没用。

【问题讨论】:

  • 您可能会发现 istream 的成员 get() 很有帮助,尤其是在第二个 sn-p 中。或getline 方法,甚至std::getline 将行转储到当前行。
  • std::istreamoperator&gt;&gt; 一起使用默认会跳过输入中的空格。

标签: c++ arrays char multidimensional-array


【解决方案1】:

WhozCraig 建议使用 get() 提供的答案完美无缺。这是我的代码:

char mapa[hlimit][wlimit];
for(int j=0;j<hlimit;j++)
{
    for(int k=0;k<wlimit;k++)
        mapa[j][k]=cin.get();
    cin.get();
}

【讨论】:

  • 小心 istream::get 可能引发的异常:如果您的方法很关键/需要异常安全,那么您应该尝试/捕获 get() 调用。
猜你喜欢
  • 2019-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-26
  • 1970-01-01
相关资源
最近更新 更多