ワテのブログ

The fundamental things apply As time goes by.

2017年4月19日水曜日

boostでjson : property_treeの使い方

スポンサーリンク

boostでjson : property_treeの使い方

jsonの読み込み

#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>

int main()
{
    using namespace boost::property_tree;

    ptree pt;
    read_json("/hoge/data.json", pt);

    return 0;
}

配列へのアクセス

{
    "array":[
        1,
        2,
        3,
        4
    ]
}

配列の要素はget_childにパスを指定して取得。
各要素はptreeとして取得される。
ptreeのsecondに要素が格納されている。

#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>

int main()
{
    using namespace boost::property_tree;

    ptree pt;
    read_json("/hoge/data.json", pt);

    for (auto elem : pt.get_child("array")) {
        std::cout << elem.second.data() << std::endl;
    }

/*
出力
1
2
3
4
*/

    return 0;
}
スポンサーリンク

2017年4月14日金曜日

boost splitで連続する区切り文字を1文字として扱う方法

スポンサーリンク

boost splitで連続する区切り文字を1文字として扱う方法

boost::token_compress_on
を第四引数に指定してあげればよい。

#include <vector>
#include <string>
#include <boost/algorithm/string.hpp>

int main()
{
    std::vector<std::string> v;
    boost::algorithm::split(v, "hoge,,,,gero", boost::is_any_of(","), boost::token_compress_on);
    // v[0]: hoge
    // v[1]: gero
    return 0;
}
スポンサーリンク

2017年4月9日日曜日

GoでPdfを生成する方法 その2

スポンサーリンク

GoでPdfを生成する方法 その2

gofpdfはunicodeに対応していないらしい。
gopdfはunicode対応しており日本語もあつかえる。

gopdfをインストール

インストール方法

$ go get -u github.com/signintech/gopdf

使用方法

package main

import (
    "github.com/signintech/gopdf"
    "log"
)

func main() {
    pdf := gopdf.GoPdf{}
    pdf.Start(gopdf.Config{PageSize: gopdf.Rect{W: 595.28, H: 841.89}})
    pdf.AddPage()
    err := pdf.AddTTFFont("Osaka", "Osaka.ttf")
    if err != nil {
        log.Print(err.Error())
        return
    }

    err = pdf.SetFont("Osaka", "", 14)
    if err != nil {
        log.Print(err.Error())
        return
    }
    pdf.Cell(nil, "おはよう")
    pdf.WritePdf("hello.pdf")
}

実行方法

$ go build pdf.go
$ ./pdf
スポンサーリンク

GoでPdfを生成する方法

スポンサーリンク

GoでPdfを生成する方法

gofpdfをインストール

gofpdf: https://github.com/jung-kurt/gofpdf

インストール方法

$ go get github.com/jung-kurt/gofpdf

使用方法

package main

import (
    "github.com/jung-kurt/gofpdf"
)

func main() {
    pdf := gofpdf.New("P", "mm", "A4", "")
    pdf.AddPage()
    pdf.MoveTo(20, 20)
    pdf.LineTo(170, 20)
    pdf.ClosePath()
    pdf.SetLineWidth(1)
    pdf.DrawPath("D")
    pdf.SetFont("Arial", "B", 16)
    pdf.Text(40, 50, "Hello, world")
    pdf.OutputFileAndClose("hello.pdf")
}

実行方法

$ go build pdf.go
$ ./pdf


hello.pdf
が生成される。

具体的なコードのサンプルは
https://github.com/jung-kurt/gofpdf/blob/master/fpdf_test.go
にある。

スポンサーリンク