読者です 読者をやめる 読者になる 読者になる

しーくさんのUp & Down - Thinking Notes

更新頻度はあまり高くないです。プログラミングやLinuxなどのことについてや、果てはゲーム記事まで。

マルチバイトとワイドの文字列変換サンプル(ほとんどC言語)

内容は表題の通り。まあできる人にとっちゃ、こんなの朝飯前なのかもしれませんがとりあえず自分用にメモしてみる。 コメントを結構端折ってるのでわかりにくいかも・・・(後で自分で読解するにしても C++で書いてあるけど、C++である必要が感じられないw …

ロケールに関して

C++でロケールを設定する方法を今更ながらに。setlocale(LC_ALL, ""); とだけでは、C言語ライブラリだけしか効果がなくて、 C++周りでも効果を設定するには、std::locale::global(std::locale("")); と書けばいいらしい。(Cライブラリもコレで一発とか?)…

とりあえずGTK2.0のプログラムを書いてみる

というわけで書いてみた Main.cpp #include <gtk/gtk.h> int main(int argc, char** argv){ //GTKを初期化する gtk_set_locale(); gtk_init(&argc, &argv); //ウィンドウの作成 GtkWidget* window; //GTKウィンドウのポインタ window = gtk_window_new(GTK_WINDOW_TOPLE</gtk/gtk.h>…

今更gcc(g++)でwchar_t使ってみるときのメモ

ちょっとハマっちゃったんで、メモを残す ・基本的に、Linuxヘッダーに「tchar.h」はないので、wchar_tやL””を多用する。 ・wsetlocaleなんてものはなく、普通に読み書きする一番最初の前にsetlocale(LC_ALL, "");すればいい。 ・wprintf("%ls\n", L"Hello")…

勘違いしてた「const」の使い方

Wikipedia:JavaとC++の比較 http://ja.wikipedia.org/wiki/Java%E3%81%A8C%2B%2B%E3%81%AE%E6%AF%94%E8%BC%83#.E6.96.87.E6.B3.95 で、constの使い方の違いに言及されてるんだが、 Javaのfinal的な使い方を期待して、 const Rectangle r; r = anotherRectan…

SafeDeleteマクロ類のテンプレート関数版

C++

template <typename Type> inline void SafeDelete(Type*& p){ if(p != NULL) { delete p; p = NULL; } } template <typename T> inline void SafeDeleteArray(Type*& p){ if(p != NULL) { delete[] p; p = NULL; } } これでいいらしい。SafeRelease系なら、 delete文のところを消し、代</typename></typename>…

DirectX-SDK with C/C++(x64)開発境構築(VC++2010 Express) Windows 7-x64とかで

初心者向けなんだかなんだかよくわからない、VC++とDirectXSDKとWindowsSDKのx64開発環境構築を目指すという内容の記事です。 いきなりVC++でDX11かつx64なプログラム書こうとする猛者がいるとは思えないし、”普通”ならこの辺のノウハウも知ってそうだけど。…

C/C++言語(Windows用)で、それが管理者権限で実行されているかプログラム内から確認したい時のサンプル

#include <windows.h> #include <tchar.h> #pragma comment(lib, "kernel32") #pragma comment(lib, "user32") #pragma comment(lib, "advapi32") //自作関数定義 BOOL IsAnAdmin(VOID){ BOOL b = FALSE; SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY; PSID Ad</tchar.h></windows.h>…

C/C++言語でWindowsの環境変数/値を取得/列挙する

getenv-win.cpp #include <stdio.h> #include <locale.h> #include <stdlib.h> #include <windows.h> #include <tchar.h> int _tmain(const int argc, const TCHAR *argv[]){ _tsetlocale(LC_ALL, _T("")); // 起動引数のチェック if(argc >= 2){ const int BUFFER_SIZE = 2048; TCHAR buf[2048]; //オプション</tchar.h></windows.h></stdlib.h></locale.h></stdio.h>…