開発中のオンラインゲームに関することを書き綴っています.プログラミング関係の話題が多いですが,よかったら見て行ってください.

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
-------- : スポンサー広告 :
Pagetop

文字列の切り出しについて(トークン分割)

 ゲームに限らずプログラミングをしていると、コンマや改行コードで区切られた文字列を切り出したくなることがあります。今回は文書の解析や独自データの読み込みにも使えるこの方法を少しだけお話します。

 C標準関数にはwcstok()(マルチバイト用はstrtok())という便利な関数があります。
 この関数は文字列からトークン(記号で区切られた文字列)を切り出してくれます。

#include <string.h>
WCHAR* wcstok(WCHAR* str, WCHAR* delimiter);

strには『a,b,c,d』のような文字列のポインタを(初回以外はNULL)、
delimiterには『,\n』のような区切り記号を集めた文字列のポインタを指定します。
どちらの文字列も末尾にNULL文字が必要です。
関数は切り出した文字列の先頭アドレスを返します。

以下にこの関数を用いて『a,b\nc』を『a』『b』『c』に分割するソースを示します。



//サンプルソース(一部)
WCHAR* pString = L"a,b\nc";
WCHAR* del = L",\n";
WCHAR* token;
token = wcstok(pString, del);
MessageBoxW(NULL, token, NULL, MB_OK);
while(token != NULL){
token = wcstok(NULL, del);
MessageBoxW(NULL, token, NULL, MB_OK);
}

//出力(メッセージボックス)
『a』
『b』
『c』
『』(NULL)



 本日私はこれを用いて、CSV形式で指定された特定のファイルを別の場所へコピーする簡単な分類アプリを作りました。
 この方法を用いれば、ユーザから『/whisper 内藤 Hello』のようなコマンドを受け取って処理することも可能になりますし、『機種名,分類,HP,燃料...』のような形で独自のデータを定義し、自分のゲームに読み込ませることもできるようになります。
 ゲームプログラミングを行っている皆さんは是非一度挑戦してみて下さい。やや地味なテクニックですが、きっと皆さんのプログラムの隠し味となるでしょう。

テーマ : ゲーム製作 関連
ジャンル : ゲーム

2008-10-02 : ゲーム製作 : コメント : 0 : トラックバック : 0
Pagetop
コメントの投稿
非公開コメント

Pagetop
« next  ホーム  prev »

プロフィール

内藤工場長

Author:内藤工場長
 20代前半の男性で,愛知県に在住しています.HNはリネージュ2をプレイしていたときに生産職で,リアル苗字が内藤だったことに由来します.
 大学では情報工学を勉強し,独学でゲームプログラミングも覚えました.画像はサークル活動で作ったゲームのスクリーンショットです.
 中々半人前を抜け出せませんが,ゲームで起業しようと模索中です.
こんな私でも応援して下さってる方々がいらっしゃいます.感謝~~~

検索フォーム

ブロとも申請フォーム

この人とブロともになる

QRコード

QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。