忍者ブログ

神戸電子専門学校ゲームソフト学科の生徒が運営するGESのブログです。

   

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

数字→文字、文字→数字、変換、lexical_cast

// 理想1
int num=893;                // これを文字列にしたい!
std::string str;              // 文字列格納先
str=(std::string)(num); // 無理やりキャストなんてことはできない・・・・・
printf("%s",str.c_str() );

// 理想2
std::string str="893";     //  数字にしたい
int num;                          // 数字格納先
num=(int)(str);               // 無理やりキャストなんてことはできない・・・・・
printf("%d",str.c_str() );

あるひとつのフォーマットにしたがって書けば、実現することができます。
今回紹介するのは、lexical_castです。

拍手[0回]


#include <boost/lexical_cast.hpp>
#include <string>
#include <stdio.h>
int main()
std::string str="-893";          // マイナスが入ってても大丈夫!
int i_str = boost::lexical_cast<int>( str );
printf(" 数字→文字= %d \n",i_str);
 
int num=893;
std::string str_i = boost::lexical_cast<std::string>( num );
printf(" 文字→数字= %s \n",str_i.c_str());
 
return 0;
}
/* -出力-
数字→文字= -893
文字→数字= 893
*/

boost::lexical_cast
は文字と数字の変換を自動にやってくれます。floatやdoubleでも可能です。
文字→数字にする時、文字列が"893abc"などが含まれているとエラーが出ます。
元ネタ(http://www.kmonos.net/alang/boost/classes/lexical_cast.html)

注)
boostライブラリが入っていないとコンパイルできません。補足をどうぞ!

補足)
標準ライブラリというのに対して、boostライブラリというものがある。
標準ライブラリは標準装備なのだが、boostライブラリは入っていない。
http://www.kmonos.net/alang/boost/ のboostのインストール方法の項目を見つつ入れたい人はどうぞ。
Boostライブラリは標準に入っていない関数がいっぱいある。(入っているのもある)
Boostライブラリの使用はSTLなどのテンプレートの記述に慣れてからをおすすめする。
2年でも入れてない人は多いし、ゲーム制作に無くても全然作っていけます。
C++に興味ある人とかboostという名前空間がかっこいいと思った人は入れる価値があります。
ゲームに入れる時は、振る舞いを確認していれましょう。
今後、boost関連の記事を書くかもしれません。

byリーダ和田
PR

COMMENT

NAME
TITLE
MAIL(非公開)
URL
EMOJI
Vodafone絵文字 i-mode絵文字 Ezweb絵文字
COMMENT
PASS(コメント編集に必須です)
SECRET
管理人のみ閲覧できます

ブログ内検索

最新コメント

[01/29 人面犬]
[10/01 8ch]
[09/12 uncle]
[09/10 某卒業生]
[06/07 uncle]

カレンダー

10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

テスト

Copyright ©  -- GESブログ --  All Rights Reserved
Design by CriCri / Photo by Geralt / powered by NINJA TOOLS / 忍者ブログ / [PR]