C# 在C语言中从文件读取2D矩阵到2D int数组
我在从文件中读取二维文本并将其导入int数组时遇到问题。具体而言,我的文本文件如下所示: 2,3,4,5,6 5,2,3,4,5 2,4,6,7,4 2,7,8,5,6 所以矩阵中的每个单元格都用逗号分隔,每一新行都以新行开头 我试过很多方法让它工作,但我做不到!简单地说,我希望在末尾有一个int[]]或int[,]数组 注:我可以简单地将一维矩阵读入int[]如下:C# 在C语言中从文件读取2D矩阵到2D int数组,c#,arrays,matrix,int,C#,Arrays,Matrix,Int,我在从文件中读取二维文本并将其导入int数组时遇到问题。具体而言,我的文本文件如下所示: 2,3,4,5,6 5,2,3,4,5 2,4,6,7,4 2,7,8,5,6 所以矩阵中的每个单元格都用逗号分隔,每一新行都以新行开头 我试过很多方法让它工作,但我做不到!简单地说,我希望在末尾有一个int[]]或int[,]数组 注:我可以简单地将一维矩阵读入int[]如下: int[] array= File.ReadAllText(fileppath).Split(',').Select(t =&g
int[] array= File.ReadAllText(fileppath).Split(',').Select(t => int.Parse(t)).ToArray();
结果是int[][]。您正在读取所有行,但代码只处理一行。如果您试图创建一个二维整数数组,则需要如下内容: 字符串文本=@2,3,4,5,6 5,2,3,4,5 2,4,6,7,4; text.Split'\n'.Selectline=>line.Split','.Selectt=>int.Parset.ToArray.ToArray 其中,出于测试目的,我已将读取的文件替换为静态字符串,请尝试以下操作:
String input = File.ReadAllText( @"c:\myfile.txt" );
int i = 0, j = 0;
int[,] res = new int[10, 10];
foreach (var row in input.Split('\n'))
{
j = 0;
foreach (var col in row.Trim().Split(' '))
{
res[i, j] = int.Parse(col.Trim());
j++;
}
i++;
}
如果该力不起作用,您也可以选择:
int[][] list = File.ReadAllLines("myfile.txt")
.Select(l => l.Split(',').Select(i => int.Parse(i)).ToArray())
.ToArray();
首先需要将每一行的索引添加到第一个维度,然后将该行中的每一列添加到第二个维度 请尝试以下代码:
int[][] array = File.ReadAllText(filepath).Split('\n')
.Select(r => (r.Split(','))
.Select(c => int.Parse(c)).ToArray()).ToArray();
为了说明这一点,您遇到的问题是将每一行的引用存储到锯齿数组int[][]或二维数组int[,] 我建议你先看看这里 如果要创建锯齿状数组很简单,第一个维度将是文件中的行数。记住这个锯齿状数组在每个位置都有数组
int[][] a = new int[amountOfLinesTxt][];
因为您可以获得每行的数组,所以您只需要将数组分配到特定位置,例如
int[] array= File.ReadAllText(fileppath).Split(',').Select(t => int.Parse(t)).ToArray();
a[0] = array
其他线路也一样
现在,如果您想使用二维数组,您需要在案例中从指定维度开始,例如int[,]a=newint[amountfrowstext,amountofColumnsTxt]
然后,当您阅读您的行时,您需要将项目保存在其中
int[] array= File.ReadAllText(fileppath).Split(',').Select(t => int.Parse(t)).ToArray();
for(int i = 0; array.Length; i ++)
{
a[currentRow, i] = array[i];
}
明白了吗?当然,有更好的方法可以使用Linq获得结果,只需看看前面的答案。希望这对我有所帮助,当我将静态字符串粘贴到表单中时,它的换行符丢失了亲爱的Arvin,您的替代方法工作得很好。非常感谢。我不确定,所以请尝试以下方法:float[][]list=File.ReadAllLinesmyfile.txt.Selectl=>l.Split','.Selecti=>float.Parsei.ToArray.ToArray;
int[] array= File.ReadAllText(fileppath).Split(',').Select(t => int.Parse(t)).ToArray();
for(int i = 0; array.Length; i ++)
{
a[currentRow, i] = array[i];
}