はかせのラボ

私の頭の中を書いていく雑記ブログです

boost boost::lexical_castを使ってみる

あいさつ

どうも、はかせです。
今回はboost::lexical_castを使ってみます。

この記事ではboost_1_69_0を使っています。

boost::lexical_cast

boost::lexical_castは文字列→他の型、他の型→文字列の変換を行うキャストです。
「boost よく使う」とかでググるとよく見かけるやつです。

#include "pch.h"
#include <iostream>
#include <Windows.h>
#include <boost/lexical_cast.hpp>

using namespace std;
using namespace boost;
int main()
{
	int testInt = 1234;
	double testDouble;
	float testFloat;
	string testString = "1.234";
	try 
	{
		testFloat = lexical_cast<float>(testString);
		cout << testFloat << endl;
		testDouble = lexical_cast<double>(testString);
		cout << testDouble << endl;
		auto test = lexical_cast<double>(testString);
		cout << test << endl;
		testString = lexical_cast<string>(testInt);
		cout << testString << endl;

	}
	catch(const boost::bad_lexical_cast& e)
	{
		cout << e.what() << endl;
	}
	
	getchar();
}

f:id:hakase0274:20190203224342p:plain

まぁ特段問題もなく変換することが出来ました。

ほかの変換と比べていい点

※これはあくまで筆者の私見です
使ってみて私が思ったのは他のc++のキャストと同じような書き方
文字列↔他の型の変換が出来るのが使いやすいと思いました。

いままでもstreamを使ったりatoiとかを使って変換したことはありますが、
文字列→他の型か他の型→文字列かの変換がほとんどで
同じ書き方で文字列↔他の型の変換ができるのが楽だと思いました。

あとがき

今回はboost::lexical_castを使ってみました。
使いやすさはとてもいいと感じました。
他のc++キャストと同じような書き方で書けるので
書き方がそろうのと直感的に使えるのがいいです。

boostはこのような便利な小物をたくさん提供してくれるものらしいですね。
うまく使いこなせばコードが短くなったり
メモリ管理とかをプログラマーが意識する必要がなくなったりするみたいです。

これからも暇を見つけてちまちま勉強していきたいと思います。

それでは今回はこの辺でノシ