Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Считывание текстового файла в массив


Автор: okaton 1.10.2007, 20:14
Доброго времени суток. 
Помогите! Как в C# можно считать данные из текстового файла в массив типа int. Не могу! уже бьюсь лбом о монитор! smile 

Автор: zaver 1.10.2007, 20:50
если ты хочешь считать файл:
Код

using System.IO;
FileStream fs=new FileStream(@"c:\....\mytxt.txt",FileMode.OpenOrCreate);
int b=fs.ReadByte();
string text="";
while(b>=0)
{
text+=char.Char.ConvertFromUtf32(b);
b=fs.ReadByte();
}
//теперь в text находится файл ввиде строки

ну если например в текстовом файле перечислены числа типа int в каждой новой строке (тк я тебя понял)
то:
Код

string[] strs=text.Split("\r\n", StringSplitOptions.None);
int[] output=new int[strs.Length];
for (int i=0; i<strs.Length; i++)
 output[i]=int.Parse(strs[i]);
//теперь в output массив чисел

Автор: okaton 1.10.2007, 21:09
zaver, Спасибо! 


не работает, 

Код

string[] strs = text.Split("\r\n", StringSplitOptions.None);


ошибки выдает

Цитата

Zhe best overloaded method match for 'string.Split(params char[])' has some invalid arguments    
Argument '1': cannot convert from 'string' to 'char'
Argument '2': cannot convert from 'System.StringSplitOptions' to 'char'



Мне нужно заполнить двумерный массив [9, 20] из тектового файла
в файле 10 строк, с 1 строки по 9 забиты числа (20 столбцов), как правило числа разделены пробелом.
В последней 10 строке всякая лабуда написана с применением текста и цифр, ее считывать не надо

Автор: okaton 1.10.2007, 21:46
zaver, я немного подкорректировал

Код

char[] seps = { ' ', '\r', '\n' };
string[] strs = text.Split(seps, StringSplitOptions.None);


И вроде бы все ничего, возникли две трудности
в массиве strs возникают, не то что пустые строки а вот => ""
и еще как мне остановить перечисление по окончанию массива

у меня сейчас вот так
Код

FileStream fs = new FileStream("mytxt.txt", FileMode.OpenOrCreate);
int b = fs.ReadByte();
string text = "";
while (b >= 0)
{
      text += char.ConvertFromUtf32(b);
      b = fs.ReadByte();
}            
char[] seps = { ' ', '\r', '\n' };
string[] strs = text.Split(seps, StringSplitOptions.None);
int[] output = new int[strs.Length]; int q = 0;
for (int i = 0; i < strs.Length; i++)
{                
       for (int m = 0; m < 9; m++) 
      {
              for (int e = 0; e < 20; e++) 
              {
                      Ins_Tab.I_Tab[1][m, e] = int.Parse(strs[i]);
               }
      }
}

Автор: zaver 1.10.2007, 22:59
тоже норм, чтобы не возникали пустые строки используй StringSplitOptions.RemoveEmptyEntries - это будет удалять пустые строки, чтобы работало со строкой надо так: 
Код

string[] strs = text.Split(new strings[]{"\r\n"}, StringSplitOptions.None);

Автор: okaton 2.10.2007, 10:51
zaver, Спасибо большое, сейчас все работает как нужно smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)