【问题标题】:Read object with vector attribute from file c#从文件 c# 中读取具有矢量属性的对象
【发布时间】:2018-04-18 10:05:46
【问题描述】:

我有这门课:

public class Student
{
private int[] note;//vector de note
        private DateTime dataInrolarii;
        private int nrRestante; 
        private readonly int nrMatricol; 
        private const string sex = "feminin"
        public static int anStudiu = 3; 

 public Student(string cnp, string nume, int nrMatricol, DateTime dataInrolarii, int nrRestante, int[] note) : base(cnp, nume)
        {
            this.nrMatricol = nrMatricol;
            this.dataInrolarii = Convert.ToDateTime(dataInrolarii);
            this.nrRestante = nrRestante;
            this.note = new int[note.Length];
            for (int i = 0; i < note.Length; i++)
                this.note[i] = note[i];
        }
}

当然,我有 getter、setter、toString() 重载等等。 我有一个包含这个对象的文本文件:

2920118080023, George, 2, 12/09/2016, 4, 10 3 4

我想从文件中读取并在文本框中显示来自文件的学生。但我真的不知道如何使用矢量注释来做到这一点。

这是我写的:

    private void button_CitireTXT_Click(object sender, EventArgs e)
    {

        StreamReader sr = new StreamReader("citiretxt.txt");
        string linie = null;
        while ((linie = sr.ReadLine()) != null)
        {
            try
            {//oricare ar fi tipul unui atribut citit din fisier, ele sunt STRING acolo
                string cnp = linie.Trim().Split(',')[0];
                string nume = linie.Trim().Split(',')[1];
                int nrmat = Convert.ToInt32(linie.Trim().Split(',')[2]);
                string datainrolString = linie.Trim().Split(',')[3];
                DateTime datainrol = DateTime.Parse(datainrolString);
                int nrRest = Convert.ToInt32(linie.Trim().Split(',')[4]);

                string noteString = linie.Split(' ')[5];

                for(int i=0;i< noteString.Length;i++)
                {
                    noteString[i] = Convert.ToInt32(noteString[i]);

                string[] notesString
                }



                Student s = new Student(cnp, nume, nrmat, datainrol, nrRest, note);
                tb_CitireDinTxt.Text += s.ToString() + Environment.NewLine;

            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }

如何从文件中读取矢量注释?谢谢

更新:

private void button_CitireTXT_Click(object sender, EventArgs e) {

        StreamReader sr = new StreamReader("citiretxt.txt");
        string linie = null;
        while ((linie = sr.ReadLine()) != null)
        {
            try
            {
                string cnp = linie.Trim().Split(',')[0];
                string nume = linie.Trim().Split(',')[1];
                int nrmat = Int32.Parse(linie.Trim().Split(',')[2]);
                string datainrolString = linie.Trim().Split(',')[3];
                DateTime datainrol = DateTime.Parse(datainrolString);
                int nrRest = Int32.Parse(linie.Trim().Split(',')[4]);

               int[] notes = Array.ConvertAll(linie.Split(',')[5].Split(' '), int.Parse);


                Student s1 = new Student(cnp, nume, nrmat, datainrol, nrRest, notes);

                tb_CitireDinTxt.Text += s1.ToString() + Environment.NewLine;

            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }

【问题讨论】:

  • 你检查我的答案了吗?这有帮助吗?
  • @Prasadtelkikar 是的,它运作良好。我也改变了一些东西。我会更新的

标签: c# object vector


【解决方案1】:

通过考虑向量(来自 C++)-> 列表(在 C# 中)来编写答案。

如果以下是你的文件内容,

2920118080023, George, 2, 12/09/2016, 4, 10 3 4

, 拆分。那么您在第 5 个索引处的字符串将包含 10 3 4。现在要将其转换为整数数组,请使用 Array.ConvertAll() 或者您也可以将其转换为 List

试试下面的代码

//Converting into int array
int[] notes = Array.ConvertAll(linie.Split(',')[5].Split(' '), int.Parse)

//Converting into List<int>
List<int> notes= Array.ConvertAll(linie.Split(',')[5].Split(' '), int.Parse).ToList()

代替

string noteString = linie.Split(' ')[5];

for(int i=0;i< noteString.Length;i++)
     {
          noteString[i] = Convert.ToInt32(noteString[i]);

          string[] notesString
     }

【讨论】:

    猜你喜欢
    • 2014-04-21
    • 1970-01-01
    • 1970-01-01
    • 2019-01-06
    • 1970-01-01
    • 2020-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多