gpt4 book ai didi

c++ - 如何从文本文件中读取矩阵并将其存储到二维数组中?

转载 作者:行者123 更新时间:2023-11-28 06:00:24 25 4
gpt4 key购买 nike

我是这方面的初学者。我正在尝试读取一个文件并将其放入二维数组中。这是我的代码。输出文件后,它会显示内存中的垃圾,并且循环永远不会结束,除非它达到 50。

include "stdafx.h"
#include <iostream>
#include <fstream>
using namespace std;

void main()
{
char arr[50][50];
ifstream fin;
fin.open("Map.txt");

for (int i = 0; i < 50; i++)
{

for ( j = 0; j < 50; j++)
{
fin.get(arr[i][j]);
}


}
for (int i = 0; arr[i]!=NULL; i++)
{
for (int j = 0; arr[j]!=NULL; j++)
{
cout<< arr[i][j];
}
}



}

文本文件看起来像这样

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@ @@
@@ @@
@@ @@
@@ ^ @@
@@ @@
@@ @@
@@ @@
@@@@@@@@@@@@@@@@ @@
@@ @@
@@@@@@@@@@@@@@@@ @@
@@ @@
@@ x x @@
@@ @@
@@ o @@
@@ @@
@@ o @@
@@ @@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

最佳答案

我认为这样的方法可行

#include <iostream>
#include <fstream>

int main() {

const int nSize = 50;
//-- initialize array with 0 --
char map[nSize][nSize] = { {0} };

std::ifstream in;
in.open("input.txt");

int i = 0, j = 0;
while (!in.eof()) {
char next = in.get();
if (next != '\n')
map[i][j++] = next;
else {
j = 0;
i++;
}
}

int rowsCount = i + 1;
for (i = 0; i < rowsCount; i++) {
j = 0;
while (map[i][j] != 0)
std::cout << map[i][j++];
std::cout << std::endl;
}


return 0;
}

所有文本行都以“结束行符号”'\n'或'\r\n'结束。这可以指示转到数组中新的字符行。由于数组是用 0 初始化的,我们可以将它用作输出中行结束的标志,但更好的方法是在读取数组时计算数组的大小(如果所有行的大小都相同)。

关于c++ - 如何从文本文件中读取矩阵并将其存储到二维数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33415446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com