如何在C ++程序中使用graphviz neato

时间:2016-06-03 10:47:14

标签: c++ boost

Contination of this question

#include <boost/graph/graphviz.hpp>
#include <boost/graph/grid_graph.hpp>
typedef boost::grid_graph<2> Grid;
int main()
{
    boost::array<std::size_t, 2> lengths = { { 3, 5 } };
    Grid grid(lengths);
    std::ofstream gout;
    gout.open("test.dot");
    boost::write_graphviz(gout, grid);

}

我跑

system('neato -Tpng overlap=false test.dot > test.png');

来自c ++程序。它没有工作。即没有创建png文件

当我从控制台提示符运行相同的命令时,它确实按预期工作。

1 个答案:

答案 0 :(得分:4)

如果重定向在系统的shell上不起作用,请使用选项:

system("neato -Tpng overlap=false test.dot -o test.png");

还要注意您的工作目录。确保您的输入位于当前工作目录中,并检查您是否在同一目录中查找输出(test.png)。

或者,拼出路径

system("neato -Tpng overlap=false /path/to/dir/test.dot -o /path/to/dir/test.png");
  

CAVEAT:当然,在C ++字符串中,如果您的路径包含反斜杠,则需要转义反斜杠