Проблема с чтением файла .txt и преобразованием его в экземпляр кортежа

#opl

#opl

Вопрос:

У меня есть .txt файл, я хочу прочитать его и преобразовать в экземпляр, чтобы кортежи могли его прочитать

Мой текстовый файл содержит:

 day 7h 20h

care amy baba

care baba bintou
  

Я хочу прочитать текстовый файл и получить следующие данные:

 day = <7.20>

care = [<"amy", "baba">

          <"bintou", "baba">
                ]
  

Сценарий выглядит следующим образом:

 // Reads the content of a file and returns its content as a string

function file_to_string(files) {

    var f = new IloOplInputFile(files);

    if (f.exists) {

        //     writeln("Reading file : ", fichier );

        var s = "";

        var indent = "";

        var tab = new Array();

        while (!f.eof) {

            s = s   f.readline()   "n";

            s = s.split(" ");

        }
        write(s);

        f.close();  // Fermeture fichier instance
    }
    else
        writeln("nWARNING : the file ", files, " doesn't exist");
    return s;
}
  

Ответ №1:

Вы должны определить соответствующие кортежи и создать из них (пустые) наборы. Затем вы можете использовать функцию add набора кортежей, чтобы добавить новые кортежи в набор. Этот .mod файл

 tuple day {
  int field1;
  int field2;
}
{day} days = {};
tuple care {
  string field1;
  string field2;
}
{care} cares = {};

execute {
  var f = new IloOplInputFile("readtuple.data");
  while (!f.eof) {
    var s = f.readline();
    var fields = s.split(" ");
    if ( fields.length < 2 )
      // empty or invalid line
      continue;
    if ( fields[0] == "day" )
      days.add(Opl.atoi(fields[1]), Opl.atoi(fields[2]));
    else if ( fields[0] == "care" )
      cares.add(fields[1], fields[2]);
    else {
      // invalid line
    }
  }
  f.close();
}

execute {
  writeln(days);
  writeln(cares);
}
  

Выдает этот вывод с вашими данными:

  {<7 20>}
 {<"amy" "baba"> <"baba" "bintou">}