C++ “我的函数”不会替换“我的函数”&引用;加上&引用;而且它不会像应该的那样显示数组
我试图显示从文件检索到的二维数组,但它无法正确显示。文件读入二维数组后,它也不会立即将元素从句点切换到空格 我只是想在屏幕上显示一个空白字段,并能够使用getField函数加载更多字段C++ “我的函数”不会替换“我的函数”&引用;加上&引用;而且它不会像应该的那样显示数组,c++,C++,我试图显示从文件检索到的二维数组,但它无法正确显示。文件读入二维数组后,它也不会立即将元素从句点切换到空格 我只是想在屏幕上显示一个空白字段,并能够使用getField函数加载更多字段 C++ class Field { private: string xy[20][50]; public: Field() {} void getField(string name) { ifstream
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。没有比这更好的了。新到这个网站,如果我遗漏了什么或语法错误,请告诉我。我不知道如何在这里发布问题,所以我在没有代码的情况下发布了它,它立即被否决:/。@shoefile>>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), '.', ' ');