C++ “我的函数”不会替换“我的函数”&引用;加上&引用;而且它不会像应该的那样显示数组

C++ “我的函数”不会替换“我的函数”&引用;加上&引用;而且它不会像应该的那样显示数组,c++,C++,我试图显示从文件检索到的二维数组,但它无法正确显示。文件读入二维数组后,它也不会立即将元素从句点切换到空格 我只是想在屏幕上显示一个空白字段,并能够使用getField函数加载更多字段 C++ class Field { private: string xy[20][50]; public: Field() {} void getField(string name) { ifstream

我试图显示从文件检索到的二维数组,但它无法正确显示。文件读入二维数组后,它也不会立即将元素从句点切换到空格

我只是想在屏幕上显示一个空白字段,并能够使用getField函数加载更多字段

C++
    class Field
    {
    private: string  xy[20][50];

    public:
        Field() {}

        void getField(string name)
        {
            ifstream file;
            file.open(name);
            for (int x = 0; x < 20; x++)
            {
                for (int y = 0; y < 50; y++)
                {//periods should be changed to spaces
                    file >> xy[x][y];
                    if (xy[x][y] == ".")
                    {
                        xy[x][y] = " ";
                    }
                }
            }
            file.close();
        }
        //displaying field
        void display()
        {
            for (int x = 0; x < 20; x++)
            {
                for (int y = 0; y < 50; y++)
                {
                    cout << xy[x][y];
                    cout << endl;
                }
            }
        }
    };
    int main()
    {
        Field field1;
        field1.getField("field1.txt.txt");
        field1.display();
        system("pause");

    }
`````````````````````````````````````````````````
the txt file is pretty much this 20 times:

    |................................................|
C++
类字段
{
专用:字符串xy[20][50];
公众:
字段(){}
void getField(字符串名称)
{
ifstream文件;
文件。打开(名称);
对于(int x=0;x<20;x++)
{
对于(int y=0;y<50;y++)
{//句点应改为空格
文件>>xy[x][y];
如果(xy[x][y]==”)
{
xy[x][y]=“”;
}
}
}
file.close();
}
//显示场
无效显示()
{
对于(int x=0;x<20;x++)
{
对于(int y=0;y<50;y++)
{
问题是:

private:string xy[20][50];

然后执行此操作,希望将每个字符读入数组的每个元素:

文件>>xy[x][y];

问题在于,由于
xy
数组的类型为
std::string
,因此整个字符串被读入
xy[x][y]
,而不是单个字符

您可能想要的是:

private:char xy[20][50];

那么另一个变化是:

  file >> xy[x][y];
  if (xy[x][y] == '.')
  {
      xy[x][y] = ' ';
  }

请注意--您可以先将整个内容读入数组,而无需检查字符是否为
,最后使用以下内容替换:

#包括
//…先看所有的东西
对于(int x=0;x<20;x++)
{
对于(int y=0;y<50;y++)
文件>>xy[x][y];
}
//现在替换
标准::替换(&xy[0][0],&xy[0][0]+sizeof(xy),“,”);

欢迎使用Stack Overflow!您忘记了包含不起作用的代码。添加代码时,请确保删除所有完全不相关的部分,并注意如何在Stack Overflow上设置代码格式,以便人们可以更轻松地阅读和更快地回答。祝您解决问题好运!欢迎使用Stack Overflow。您是如何做到这一点的nk我们可以回答您的问题?我们无法从我们所在的位置看到您的代码!请发布一个显示您遇到的问题的链接。在发布任何代码之前,请阅读。该链接描述了发布到问题的代码的黄金标准,但更妙的是,它是一种惊人的调试技术。如果您按照链接的说明操作,您会发现你通常不必问这个问题。你可以自己动手做MCVE。没有比这更好的了。新到这个网站,如果我遗漏了什么或语法错误,请告诉我。我不知道如何在这里发布问题,所以我在没有代码的情况下发布了它,它立即被否决:/。@shoe
file>>xy[x][y];
--要意识到读取的是整个字符串,而不是一个字符。您的数组可能应该是
char xy[20][50]
,而不是
std::string
的二维数组。
#include <algorithm>
//...read everything first
for (int x = 0; x < 20; x++)
{
   for (int y = 0; y < 50; y++)
      file >> xy[x][y];
}

// now replace 
std::replace(&xy[0][0], &xy[0][0] + sizeof(xy), '.', ' ');