なんとな~くしあわせ?の日記

ClojureとかAWSの設定とかをメモする技術ブログ

C++

wxWidgetsにおけるプラットフォームごとのアイコン読み込み方法

Windows,Linux,Macその他での共通コードからのビルドが可能なwxWidgetsであるが アイコンの読み込み方法はかなりプラットフォーム依存である。やっとMacでの正しいやり方が分かったので、まとめて書き留めておく。 簡単な方から順に説明する1. Linuxの場合:…

wxWidgetsと日本語

何度も同じようなエントリを書いているが、書かずにはいれない。日本語って面倒。 #include <wx/wx.h> #include <iostream> int main() { wxString jap = wxT("あいうえお"); std::cout << jap << std::endl; std::cout.setf( std::ios::hex, std::ios::basefield );// 16進数で</iostream></wx/wx.h>…

vector<クラス>をソートしたいとき

vector内部にオリジナルのクラスを作って、なおかつソートさせたいときがありますよね。 そんな時はbinary predicateをstd::sortの3つ目の引数に設定してやればいいらしい。「binary predicate」は日本語でなんて言えばいいんだろう?逐語訳すると二進述語…

Macでconfigure

私はMacを使い始めて日が浅いが、C++のコンパイルがこんなに面倒だとは思わなかった。なんか設定が消えているのだろうか。 CXXFLAGS='-I/Developer/SDKs/MacOSX10.6.sdk/usr/include/ -I/Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/ -I/Developer…

単純なint型の集合をstring型に

最近nkfをいろいろ触っている。nkf_charはtypedefで定められたint型の別名である。 nkf_charはShift_JISなら2ついるし、UTF-8なら3ついるかもしれない。 それをC++のstd::stringとかstd::wstringとかwxStringに変換できないかなあと思ってた。つまりは可変…

libnkfを使う

iconv絡みでいろいろエラーが出て困ったので、よりポータブルな文字コード変換ライブラリを求めてlibnkfにたどり着いた。 libnkflibnkfを使うついでに多段makeとMakefile中のif文の練習をする configureスクリプトがあったけど新たにMakefileを書いた。 プロ…

wxWidgetsでShift_JISからUTF-8変換

/* * main.cpp * * Created on: 2012/05/15 * Author: learning */ #include <wx/wx.h> #include <wx/strconv.h> using namespace std; int main() { // Shift_JISの文字列を const char* 型で宣言 const char sjis[9] = {0x88,0xa2,0x82,0x70,0x90,0xb3,0x93,0x60}; wxString sjis_</wx/strconv.h></wx/wx.h>…

libxmlでHTMLParserを使う

メイン関数から直接libxmlの関数を呼ぶ最小限のサンプル 「&」とかの実体参照化しなければいけない文字がある場合エラーは出るが、とりあえず最後まで動くはず。 #include <libxml/HTMLparser.h> #include <iostream> using namespace std; void FindInfo(xmlNode*& element); int main() {</iostream></libxml/htmlparser.h>…

wxSQLite3の練習

Bindを使いたかったのだけれどエラー出まくりで断念。結局SQLクエリをwxStringでつなげた。 /** * WxSQLiteTest.cpp - wxSQLiteのテスト用ソースコード * */ #include "WxSQLiteTest.h" bool WxSQLiteTest::OnInit() { return true; } int WxSQLiteTest::OnE…

なんか前もやってた気がするけど

2chのスレッド一覧を正規表現で取り出す #!/usr/bin/perl -w use strict; open (FH, "< test.dat"); my @list = <FH>; my $line; foreach $line (@list) { # サンプル:9241201701.dat<>ステマと言われて困っています。- 2ちゃんねる知恵袋 (10) if ($line =~ /</fh>…

emacsでC++

今までeclipseでやってたのがだいぶ軽くなった印象 「C-x C-s」で保存 「C-b k」でバッファを破棄 「M-x compile RET」でMakefileを実行将来的にはECBとかいうやつも導入してみたいなあ、eclipseとどっちが重いか勝負 ECB(Emacs Code Browser) - 紫藤のWiki

wxSQLite3を使う

SQLiteはAndroidの標準DB(?)にも採用されている優れたリレーショナルデータベースです。 wxWidgetsで使おうと思っていたので、wxSQLite3をビルドして組み込んでみた。まずぶち当たるのはバージョンの問題。SQLite自体が結構な速さで更新されているのでちゃん…

C/C++でundefined reference toエラーが出る場合

C++

フリーソフトを落としてきて「./configure → make」しようとすると 「undefined reference to〜」が出てきて砂を噛むような思いをした人は多いはず。 パターン1 '~'の部分にメソッド名とかが見える undefined reference to `HogehogeClass::HogehogeMethod…

wxTreeCtrl

ツリー構造でファイル名などを配置したいと思った。 wxPanel *panel = new wxPanel(this, -1); wxBoxSizer *vbox = new wxBoxSizer(wxVERTICAL); // 親要素 wxArrayString array; array.Add(wxT("親要素1")); array.Add(wxT("親要素2")); array.Add(wxT("…

wxXmlDocument

wxXmlDocumentを試してみる。wxWikiには、wxWidgetsには適当なXMLパーサがないと書かれていたがwxWidgets2.9からXML読み取り用のクラスを使えるようになったのだ。ひとまずここのサイト『たのしいXML』サンプルファイル集からお借りしたXMLのサンプルファイ…

Shift-JISからutf-8に直接変換

C C++

C言語で2ちゃんにつないで、ダウンロードした内容をUTF-8に変換する処理。 文字コード対応表はここのサイトUnicode対応 文字コード表のものを使わせてもらった。漢字とカナを変換するために、16進数で「9,a,b,c,d,e」から始まるものを全てくっつけた。 たぶ…

C言語でchar文字判定

1 #include <iostream> 2 #include <stdio.h> 3 #include <string.h> 4 5 using namespace std; 6 7 int main(){ 8 9 string sjis = "\x88\xa2\x82\x70\x90\xb3\x93\x60"; 10 cout << sjis << endl; 11 12 for ( int i = 0;i < sjis.length(); i++){ 13 char hex[3]; 14 char testHex[8]; </string.h></stdio.h></iostream>…

wxで画像の読み込み・書き出し

海外のwikiに非常に良いお手本があったので使ってみる。 Drawing on a panel with a DC - WxWiki 結局wxWidgetsで画像をだそうと思ったらDCのコンストラクタを記述して、実体からメソッドをいじってBlitで描画するようだ。 特にPanelとかSizerとか関係なくDC…

いろいろな言語でHttpClient

全てのコードが最適な形で書かれている訳ではないことをご了承ください。あくまで自分の実験的なコードです。参考にしたサイトは一番下にまとめて記述しています。 Java package foo.bar; import java.io.*; import java.net.*; public class HttpClient { p…

Code::BlocksでwxWidgets

前々から使おうと思いながらEclipseで開発を行っていたwxWidgetsですが、ようやく使い方がわかってきたのでこっちに移行しようかなと。やっぱUnix側のC++はEclipseじゃ無理だべ。Javaに関しては無敵なんだけどな。 最近eclipseのバグの理由がわかってeclipse…

Debug,Releaseでmakeコマンドを使い分けたい時のテンプレ

gccはコードを最適化してるとデバッグできないみたいなので使い分けプロジェクト構成は下のような感じ [Project] ├--[include]-- **.h ├--[src]-- **.cpp └--Makefile # Makefile TARGET = HelloWorld.exe SRCS = HelloWorld.cpp OBJECTS = HelloWorld.o # …

Makefileを書く

letsboost::asio ここにあるコードを動かすためのMakefileを書いてみる。解説 ・TARGET できあがった時の実行ファイル名 ・SRCS ソースファイル(Source File) ・OBJECTS オブジェクトファイル・CPPFLAGS ソースファイルをオブジェクトファイルに固めるときの…

boostの勉強

MinGWでBoost1.47.0をビルドする - Ideals and Reality上のサイトでboostの最新版がMinGW+MSYS環境に簡単にインストールできることがわかったので試してみる。ビルドについては普通にできました。問題は書いたコードのコンパイル。改めてgccのお勉強です。 …

wxWidgetsでwindows.hを使うときのバグ

ここで指摘されているようにwxWidgets-2.8では/wx/msw/winundef.h:272:50においてバグがある。 windows.hをインクルードした後に/wx/msw/winundef.hをインクルードしようとするとなぜかコンパイラに怒られる「error: missing binary operator before token "…

いろいろうるさいwxICON

アイコンを読み込ませるのに一苦労したという話。お手本のminimal.cppではxpm形式で読み込めているのだが、どうしてもそれができず.ico形式で読み込ませることに成功した。 まず、icoファイルをオブジェクトファイルに固めるためにリソースファイルを記述す…

wxWidgetsを使ったGUI版HTTPクライアント

ようやくGUI版HTTPクライアントが完成した。本当はこの前使ったReadHtmlを組み込んで使うつもりだったんだけど、wxWidgetsにWinInetを組み入れるとエラーが出てどうにもならんかった(※まあマルチプラットフォームとは言えどもUNIX中心に開発された言語だから…

VC++とgccMakefileプロジェクト

今までVisualStudioから離れてEclipse(統合開発環境)+MinGWのgcc(コンパイラ)という環境で頑張ってきたがvectorとかのSTLライブラリをつかったプログラムを書こうとすると、いろいろ違いがあることに気づいた。具体的にはVisualStudioでvectorをインクルード…

ちょっとしたHttpクライアント

C++

昨日作ったクラスの雛形をもとにHTTPクライアントをクラス化(?)してみる。再利用できるといいんだけどなあ。 困ったことにvectorコンテナを返り値として返す方法が思いつかない(だからなぜかpublicのメンバ変数になっている)。調べればやり方はあるだろうの…

Setter/GetterをC++で

C++

クラスを用いたコーディングをする場合、中にある変数は隠蔽しなくてはならない。JavaからC++に移るとそのへんでいろいろ考えるところがあるらしい。というかまずmain関数を中心にした考え方を離れないといけない。C++でSetter/Getterを作りたくていろいろ試…

vectorとArrayList

vectorとArrayListって似てますよね。可変長配列。 Cだけしか知らなかった頃のことを考えるとすごい便利に思える。Cだといちいちメモリを確保しなおす必要があった。vectorで単純に要素を追加して、一つづつ取り出す場合。 //vector.cpp #include <stdio.h> #include <iostream></iostream></stdio.h>…