我有这段代码:
int[,] matSong;
int nNote = 0;
OpenFileDialog Of = new OpenFileDialog();
Of.ShowDialog();
StreamReader fp = new StreamReader(Of.FileName);
nNote = Convert.ToInt32(fp.ReadLine());
matSong = new int[2, nNote];
int i = 0;
string buffer = fp.ReadLine();
while (buffer != null)
{
int.TryParse(buffer, out matSong[0, i]);
int.TryParse(buffer, out matSong[1, i]);
MessageBox.Show(buffer);
buffer = fp.ReadLine();
i++;
}
我从文件中读取的字符串类似于“123 400”或“1234 500”或“1234 1000”。
解决方案int.Tryparse()不起作用。
如何将2个数字保存到矩阵中?
file.txt是这样的:
4
123 400
234 500
354 700
233 500
如果您有其他解决方案将数字放入我的矩阵中,我将非常感激。
我为我的英语道歉,我希望你能解决我的问题。
谢谢你的帮助很大。
Matteo Angella
答案 0 :(得分:2)
不是逐行阅读文件,而应逐字逐句阅读:
string text = System.IO.File.ReadAllText(Of.FileName);
string[] words = text.Split(' ');
您可以尝试
string[] words = fp.ReadToEnd().Split(' ');
但正如评论中所提到的,它不会正确解释换行符。
答案 1 :(得分:0)
您可以拆分字符串:
while (buffer != null)
{
var words = buffer.Split(new[]{' '}, StringSplitOptions.RemoveEmptyEntries);
int.TryParse(words[0], out matSong[0, i]);
int.TryParse(words[1], out matSong[1, i]);
buffer = fp.ReadLine();
i++;
}