Проблема прочитать файл .txt и преобразовать его как экземпляр кортежа - PullRequest
0 голосов
/ 30 марта 2019

У меня есть .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 Ответ

0 голосов
/ 11 июля 2019

Вы должны определить соответствующие кортежи и создать (пустые) их наборы. Затем вы можете использовать функцию 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">}
...