Как использовать переменные в C++ в gnuplot-iostream

Я использую gnuplot-iostream для C++, моя проблема, как показано ниже:

 gp << "set object 1 rect from 3,1 to 3.2,4 fc lt 1 \n";

В числах выше, можем ли мы использовать некоторые переменные в C++ для их замены? и как это сделать? Добавить один прямоугольник легко, но когда я захочу добавить больше, это будет очень трудно. Я пробую несколько способов, но это не работает. Спасибо вперед!

1 ответ

Решение

Никогда не использовал gnuplot-iostream, но, может быть, вам поможет какой-нибудь ванильный C++, iostream - это просто канал для консоли, поэтому вы не можете прерывать буфер, но объединяете информацию, вы можете сделать что-то вроде этого:

 gp << "set object " << 1 << " rect from "
 << 3,1 << " to " << 3.2 << "," << 4 << " fc lt 1 \n";

Но я полагаю, вы не хотите этого делать.

Я бы создал структуру и перегрузил бы оператор <<, чтобы вернуть все, что вам нужно.

struct Rect {
  float from[2];
  float to[2];
}
std::ostream& operator<<(std::ostream& os, const Rect& obj)
{
    std::string formated = "from "
      + std::to_string(obj.from[0]) + ","
      + std::to_string(obj.from[1]) + " to "
      + std::to_string(obj.to[0])   + ","
      + std::to_string(obj.to[1]);

    os << formated;
    return os;
}

Таким образом, вы можете просто определить прямоугольники и передать их в поток

Rect r1 = {{2,41},{63,1.4}};
std::cout << r1; // "from 2,41 to 63,1.4"
Другие вопросы по тегам