1 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 09:10:30 ] エスケープシーケンスやWin32APIなどの環境依存な物でもOK。 ただしその場合、質問者は必ず、環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.39【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1182740506/ 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
2 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 09:59:03 ] おつ
3 名前:デフォルトの名無しさん [2007/07/18(水) 10:25:22 ] Cはそこそこ使ってて、C++を使い始めて日が浅いんでよくわかってないんだけど、 ユーティリティー関数というか特定のクラスに依存しない関数群ってクラスとしてコード書くよりもCの関数として書いた方がいいのかな? 関数をちょっと使いたい時に、わざわざクラスの実体作って関数呼び出しするのってなんかスマートじゃない様な気もするんだけど、C++なのに普通のCのコードが混ざるのもスマートじゃない様な気がするんだよなあ。 どっちがいいんだろう
4 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 11:10:29 ] >>3 >わざわざクラスの実体作って関数呼び出しするのって class A { static void B(); }; A::B(); // インスタンス不要 まあ↑みたいなことするくらいなら、 名前空間に入れたグローバルな関数でいいんじゃないかと。
5 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 11:11:19 ] >>3 そんなときはnamespaceで囲ってしまえばいいんでない? #昔はstaticなメンバ関数しか持たないクラスを作るケースもあったけどね。
6 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 13:01:06 ] >>4 >>5 サンクス。ネームスペースを使ってみるわ〜
7 名前:デフォルトの名無しさん [2007/07/18(水) 13:58:34 ] こんにちは。 キャストについて質問があります。 グローバル宣言をしたchar型2次元配列の要素をatoi()で、 int_var = atoi(out_one_statement[12]); で整数に変換しようとするとゼロが帰るのです。 (int_var = atoi(&out_one_statement[12]);はエラー) また、char型の変数にその配列の要素を代入しようとすると、 「error C2440: '=' : 'char [32]' から 'char' に変換できません。」 となります。このメッセージはchar[4][32]とかで宣言したその配列の 「char[i][0:31]の32要素数のベクトルはスカラー変数に代入できないよ」 と解釈したのですが、実際どうなのでしょうか。 よろしくお願いします。
8 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 13:59:49 ] out_one_statement[12] の中身も言わずに・・・
9 名前:デフォルトの名無しさん [2007/07/18(水) 14:10:46 ] >>8 char out_one_statement[9][32]={0}; と宣言して、 main関数外でchar型の変数を代入して、 main関数内でそれを先に説明したように操作しています。 環境はVC++2005です。
10 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 14:13:12 ] >main関数外でchar型の変数を代入して、 具体的に何をどうやって代入したんだ。 もしくはデバッガで中身見てみようぜ
11 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 14:13:37 ] out_one_statement[0]からout_one_statement[8]までchar*型として使えるのだから、out_one_statement[12]は論外。
12 名前:デフォルトの名無しさん [2007/07/18(水) 14:14:08 ] プログラム超初心者です。 本とか買って独学で学べば良いですか? スクールとか行くべきですか?
13 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 14:16:54 ] >>12 両方やるべし
14 名前:デフォルトの名無しさん:7 [2007/07/18(水) 14:54:21 ] プログラムは端的に言ってパターンマッチングです。char型の文字列から パターンを抽出するので、外部関数内で、入力(配列)からパターンを 見つけて、char型の変数でフラグを立てたり、抽出した文字列を 出力配列out_one_statement[9][32]の"列"へ代入させています。 利用側で扱う時は char index0, index1 /* この値も代入対象 */ out_one_statement[index0][index1] あるいは、 out_one_statement[32*index0 + index1] out_one_statement[32*INDEX + index1] のようにして右辺値に利用しています。
15 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 14:55:30 ] 列ってどっちさ。
16 名前:デフォルトの名無しさん:7 [2007/07/18(水) 14:56:11 ] >/* この値も代入対象 */ 外部関数が出です。
17 名前:デフォルトの名無しさん:7 [2007/07/18(水) 14:57:52 ] >>15 [32]側です。代入操作後に代入状態をチェックしましたが、 それについては問題がないようです。
18 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 14:58:50 ] ・ char out_one_statement[9][32] なのに out_one_statement[12] という範囲外の要素を参照しているのはなぜか ・ atoi で 0 が帰ってくる時の out_one_statement[12] には何が入っているのか
19 名前:デフォルトの名無しさん:7 [2007/07/18(水) 15:04:18 ] >char out_one_statement[9][32] なのに out_one_statement[12] out_one_statement[0][12] == out_one_statement[0*index0 + 12] == out_one_statement[[12] として扱っているのですが、これに問題があるのですか? >atoi で 0 が帰ってくる時の out_one_statement[12] 3 '□'です。
20 名前:デフォルトの名無しさん:7 [2007/07/18(水) 15:06:51 ] >out_one_statement[0][12] == out_one_statement[0*index0 + 12] out_one_statement[0(index0 = 0)][12] == out_one_statement[32*0 + 12] でした。。。
21 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 15:18:47 ] >>19-20 根本的に間違ってる。そんな等号は成立しない。
22 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 15:19:37 ] 実際には out_one_statement は char の一次元配列として定義してるの?
23 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 15:19:38 ] ちゃんとNULL終端になってるのか?
24 名前:デフォルトの名無しさん:7 [2007/07/18(水) 15:46:49 ] 何となくわかりました。 atoi()にかかわらず、アドレス渡し時には”行”アドレスを渡すので、 int ctoi(char *char_var, char addr) { int i; i = char_var[addr]; return i; } と関数作って変換することにしました。
25 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 15:49:27 ] char out_one_statement[9][32]なら、 out_one_statement[12] == &out_one_statement[12][0] だよ。 out_one_statement[0][12]をアクセスしたいならout_one_statement[0][12]と書こうよ。
26 名前:デフォルトの名無しさん:7 [2007/07/18(水) 15:57:53 ] >>21 間違いを教えていただけませんか。よろしくお願いします。 char *char_varの *char_varはメモリ空間上、char_var[0]と等しく、 char_varはメモリ空間上、&char_var[0]と等しいと本で読んでいました。 二次元配列でも、先頭アドレスのchar_var[0][0]"のみ"を渡すのだとして 間違っていたようです。 >>18 さんのご指摘はこの辺が絡んでいるのでしょうか?
27 名前:デフォルトの名無しさん:7 [2007/07/18(水) 16:04:17 ] >>25 そうですね。きちんとインデックスを明示すれば問題なかったことですね。 今回のことで学習できました。ありがとうございます。 >out_one_statement[12] == &out_one_statement[12][0] だよ。 今回これが分かりました。また御厄介になるときがあると思うので、 その時よろしくお願いします。 #>>24 で分かりましたが、この関数は使わないようにします。 ありがとうございました。
28 名前:デフォルトの名無しさん [2007/07/18(水) 19:10:32 ] 1から9までの数字を1回ずつ使った9桁の数字を小町数という。 二乗した数が小町数となるような自然数をすべて求めるプログラムを 作成し、その数と小町数の両方を出力せよ。例えば24441の二乗は 597362481であり、小町数となる。 全然手をつけられません。できる方いればお願いします。
29 名前:ERP mailto:ishide@sendai-shirayuri.ac.jp [2007/07/18(水) 19:12:20 ] 久しぶりにプログラムを書き始め、visual studio 2005でc++ とMFCを使っていますが、外部の機械に入出力ポートからトリガー パルスを出力したいとおもってます。昔のbasicとか古典的なCでは そのような関数(oportのような?)が用意されていたように思い ますが。最近のWIN32環境ではみあたりません。 どのようにしたらいいでしょうか?
30 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 19:15:23 ] つ[インラインアセンブラ]
31 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 19:20:48 ] >>28 全ての小町数の平方根とっていけば求まりそうだなぁ
32 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 19:23:20 ] >>31 11111から31427の二乗が小町数かどうかチェックした方が早い希ガス。
33 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 19:33:21 ] >>29 デバイスドライバを呼ぶ。
34 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 19:35:19 ] >>28 宿題は宿題スレへ。 現行のスレに同じ問題と答えが載っている。
35 名前:なんだ。いいや、書いたから貼っておこう。 mailto:sage [2007/07/18(水) 19:47:34 ] #include <stdio.h> #include <stdbool.h> #include <stdlib.h> #include <string.h> static int compareChar(const void * l, const void * r) { const char * cl = (const char *) l; const char * cr = (const char *) r; if (* cl < * cr) return -1; if (* cl > * cr) return 1; return 0; } static bool isKomati(int val) { if (val < 123456789 || val > 987654321) return false; char buf[10]; sprintf(buf, "%d", val); if (strchr(buf, '0')) return false; // 小町数に0はない qsort(buf, 9, 1, compareChar); if (strcmp(buf, "123456789") != 0) return false; return true; } int main() { for (int ic = 11111; ic * ic < 987654321; ++ic) { if (ic % 3 != 0) continue; // 小町数は9の倍数なので、その平方根は3の倍数 if (isKomati(ic * ic)) { printf("%d * %d = %d\n", ic, ic, ic * ic); } } return 0; }
36 名前:デフォルトの名無しさん [2007/07/18(水) 22:02:56 ] wchar_t *p = L"Hello!"; のLって標準と考えてもいいんでしょうか? もしかしてWindowsだけですか?
37 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 22:08:24 ] >>36 標準
38 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 22:24:58 ] >>29 私だったら、シリアルポートのCTS/RTSとかで制御するけど。 それならWIN32APIで、CreateFileとDCB構造体を操作するAPIを使えばいい。 ややこしいけど、直接IOポートをたたきたくても無理だからね。 それにしても、メール晒すなんて勇気ある御仁ですな。
39 名前:デフォルトの名無しさん [2007/07/18(水) 23:01:40 ] 最近Cをやり始めた者です、ふと疑問に思ったのですがVisualC++、BorlandC++などのコンパイラがありますが それらの違いとは何なのでしょうか。あとコンパイラが違うとプログラムの書き方も変えないといけないのでしょうか。 くだらない質問ですいません。
40 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 23:06:53 ] 標準ではない部分が違う
41 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 23:15:58 ] 標準への準拠率も違う可能性が
42 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 23:16:00 ] >>39 世界標準の規格としての部分があり、それに各社独自な部分を加えている、とでも言えばいいんだろうか。 書き方で注意を要するようになるのは、多分C++のクラスを勉強し始めてからになるんじゃないかと。
43 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 23:23:59 ] 作っているメーカーが違う。 Visual C++はMicrosoftが作っているし、Borland C++はBorlandが作っている。 それぞれ自分の製品を買ってもらおうと必死なんで、 プログラム作りを補助するツールやライブラリなどに独自色を打ち出している。 しかし、どれもC++処理系を名乗る以上、コンパイラと標準ライブラリなどの部分は、 ISOの国際標準に則っているので、そういう独自機能を使わない限りは、 どのコンパイラでも同じ書き方が通用する。 ……というのが理想だが、現実は標準への対応具合や 標準が認めているコンパイラごとの挙動の違いなどがあるので、 時にどのコンパイラでも通用するプログラムを書くというのは難しいこともある。 C++はそれが比較的顕著なほうだが、そんなこと日常的に気にする必要があるのは、 基本的に良くも悪くも(周囲の環境か本人が)変態な場合だけなんで、 やっぱり普通はそんなこと気にする必要がない。
44 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 23:24:20 ] なるほど、あつかましいようですがVisualC++とBorlandC++ どちらのほうが入門に適しているんでしょうか?
45 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 23:28:39 ] VisualC++は入門には不必要な部分が多いが、慣れておくのも良い
46 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 23:29:52 ] すでにやり始めてるならそのまま続けろ
47 名前:デフォルトの名無しさん [2007/07/18(水) 23:32:15 ] とりあえず言語の勉強だけなら Visual C++ 2005 Express でいいんじゃないの。 無料だし。
48 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 23:37:16 ] BCも無料なんだけどパスってのが分からなかったりメモ帳しか使ったことがないってのなら>>47 のVC++が良いよ。
49 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 23:40:42 ] BC はメルアド晒すことになるし・・・
50 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 23:51:37 ] そしてC++/CLIとごっちゃになって混乱する、と
51 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 23:57:34 ] URLエンコードされたものをデコードしたいんですけど 何か良いライブラリってありますか?
52 名前:デフォルトの名無しさん:7 [2007/07/19(木) 00:06:36 ] >>7 です。 質問があります。以下のような関数を作ってファイル出力させてみたところ、 Windowsにあるノートパッドで、文字列を表示できません。。。 int output_dfg_to_file(){ FILE *fp; char filename[64]; int state = 1, index0, index1; int char_lib; printf("OUTPUT >> DFG File Name: \n"); gets_s(filename); if ((fp = fopen(filename, "w")) == NULL){ printf("ERROR: could not open file. \n"); state = 1; goto exit; } for (index0=0; index0 < LIB_TABLE_SIZE; index0++){ for (index1=0; index1 < LATTER_SIZE; index1++){ char_lib = table[index0][index1]; printf("%c", char_lib); fputc(char_lib, fp); } fputc('\n', fp); } fclose(fp); exit: return state; } いったん送信〜
53 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 00:11:47 ] 文字を出力していないのではないか? table[index0][index1] ってなにさ?
54 名前:デフォルトの名無しさん:7 [2007/07/19(木) 00:15:45 ] >>52 char table[TABLE_SIZE][LATTER_SIZE] = {0}; で出力もとデータを扱っています。 fputcは、他の関数も使った事がないので上記で出力させてできたら 移行しようと思っています。fputcは出力文字対象の整数を引数に していますが、ファイル書き込み時にも整数(int)のまま書きこん でいるのでしょうか? 普段使っているtex¬epadで出力したファイルを編集したいので、 上記関数をどう変更すればいいかわからないでいます。 よろしくお願いいたします。
55 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 00:25:23 ] >>54 printf()での出力はどうなってる?
56 名前:デフォルトの名無しさん:7 [2007/07/19(木) 00:42:59 ] >>55 int ctoi(char *char_var, char addr){ int i; i = char_var[addr]; return i; } でもって、先のボディを char_lib = ctoi(&table_logical_object[index0][0], index1); printf("%d", char_lib); fputc(char_lib, fp); としてみますと、 1.改行がされない。 2.0で初期化しているので、0が混ざって出力される。 3.フラグは適切にアサートされている といったところです。
57 名前:デフォルトの名無しさん [2007/07/19(木) 00:51:04 ] >>56 printf("%d", char_lib) となってるけど >>52 みたいに%cでやってみて ちゃんとコンソールに出力されてなければテーブルの中身がおかしいのかな?
58 名前:44 mailto:sage [2007/07/19(木) 00:52:53 ] わざわざ答えてくださってありがとうございました。
59 名前:デフォルトの名無しさん:7 [2007/07/19(木) 01:24:49 ] >>57 :%c表示 コンソールには適切に表示される文字とされない文字がありました。 特定列だけ正常に表示されています。 出力用配列への代入時のキャスティングに問題ありかなと思えました。 そこで、出力用配列を整数型に代えて、%dで表示してみると、 整数値としてきちんと10進数表示はできました。 問題は文字列表示です。。。
60 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 05:01:33 ] 教科書のソースなら読めるのですが、 コメントの少ない1000行くらいの物がなかなか読めません。 どうすればソースコードを読むのがうまくなるのでしょうか?
61 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 05:19:48 ] >>60 まず大局から把握していく 書かれてる処理が何のアルゴリズムの実装かとか、 (クラス名→)関数名・グローバル変数名→ローカル変数名と見て行って それぞれの役割とかに見当をつけて読む 理解した部分にコメントを付けながら読むといい あと色んなコーディングスタイルのプログラムを読んで経験しておくのもいい
62 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 06:21:55 ] ちなみに何行くらいの物が読めると 中級者になるのでしょうか?
63 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 06:48:24 ] 行ではないと思う。
64 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 10:07:49 ] てか関数にコメント付いてないソースは窓から投げ捨ててよし
65 名前:デフォルトの名無しさん [2007/07/19(木) 11:51:38 ] 質問があります。 MS VS2003 C++のGDI+なのですが、 Imageクラスのオブジェクトに画像が入っているとして、 1ドット目、座標 (0, 0) の色を取得するにはどうしたらよいでしょうか? Image* img = new Image("pic.bmp"); Color aColor = image.getPixelColor(0, 0); みたいにしたいのです。 よろしくおながいします。
66 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 13:57:13 ] >>65 エラーメッセージやライブラリドキュメントをよく読めばよいです。
67 名前:65 mailto:sage [2007/07/19(木) 14:25:24 ] はぁ…。 誰も回答してくれなかったけど自己解決したので一応載せておきます。 ストリーム経由しているので最適な方法とは思えませんが。 Image* orgImg; : : // ストリーム用意 CLSID clsid; GetEncoderClsid(L"image/bmp", &clsid); IStream *stream; ::CreateStreamOnHGlobal(NULL, true, static_cast<IStream **>(&stream)); // ストリームに保存 orgImg->Save(stream, &clsid); // ビットマップ読み込み Bitmap bmp(stream); // 始点の色取得 Color color(0, 0, 0); bmp.GetPixel(0, 0, &color); >>66 わっかんねーならすっこんでろやカス野郎w 死ね!!www
68 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 14:42:06 ] >>67 エスパー以外お断りなら先にそう言え。
69 名前:デフォルトの名無しさん [2007/07/19(木) 14:43:15 ] すみません。C++初心者です。 C#でWindowフォームプログラムを作成したのですが、 インストールが出来ないPCで稼動させねばならなくなりました。 (そのマシンには.NetFrameWorkが入っていない) 短いプログラムなので作成しなおしてもよいのですが、 C#から、インストーラを稼動させたりランタイムをインストールさせたりせずに インストーラ不要のEXEプログラムを作成するのに一番良い方法はなんでしょうか? 環境が似ているVC++2005 ExpressEditionをDLしてみたのですが、 インストーラ不要のEXEプログラムの作成の方法がわかりません。 (作成できるかどうかもわかりません) すみませんが、どうかご教示願います。 開発環境:WinXP 実行環境:Win2000、WinXP
70 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 14:50:54 ] >>68 ほら、「エラーメッセージやライブラリドキュメントをよく読めばよいです。」 ってまたレスしなよ。
71 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 14:51:57 ] >>67 エラーメッセージやライブラリドキュメントをよく読んで自己解決したならそれは >>66 のおかげw
72 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 14:54:55 ] >>69 結局、最終的に動かしたいのはC#で作ったやつなのかC++なのか? C++ならランタイム無しでシステム標準のDLLだけで動作するものは 作れるが、それとC#のプログラムとは何の関係もないぞ?
73 名前:72 mailto:sage [2007/07/19(木) 14:57:30 ] C++でもフォームで作れるけど、それじゃ.NET環境必須だから意味ないよな ということで、C++で作ることになるけど、かなり初歩からやらないとならんかもな。 MFCのスタティックリンク、が一番近いかなあ、、、
74 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 14:58:45 ] >>67 そんなら、GraphicsからBitmap作成して、 Graphics::DrawImage()して、 そのBitmapからピクセル取得したほうがいいんじゃないかな。
75 名前:69 [2007/07/19(木) 14:58:47 ] 早速の回答ありがとうございます。 ランタイムなしで作成できるならC++で作成したいです。 C#のコードを捨てるのは全く問題ないのですが、 ある程度慣れたVC++2005ExpressEditionで作成出来ればと思っています。
76 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 15:02:05 ] >>75 CだろうがC++だろうが、ランタイムは(普通は)使うことになるが、 静的にリンクすることで、外部のDLLに依存するのではなくプログラムに 埋め込むことが出来る。 まあ、良し悪しなんだがな。
77 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 15:03:46 ] >>75 EEだと、MFCも無いのでマウスで貼り付けるようなのは無いぞ。 まあテキストで全部できるし、リソースエディタを外部ツール使えばいいか。
78 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 15:06:02 ] >>73 開発環境が 2005EE だと リソースエディタ と MFC は無いんじゃなかったっけ? フォーム風のをフルスクラッチで書くのは泣ける希ガス
79 名前:69 [2007/07/19(木) 15:06:29 ] >>76 ,77 ありがとうございます! >>76 EEだと、MFCも無いのでマウスで貼り付けるようなのは無いぞ。 まあテキストで全部できるし、リソースエディタを外部ツール使えばいいか。 その方法が知りたいのですが良く分かりません。 ご教示頂ければ幸いです。
80 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 15:09:23 ] wxWidgetとかQTとか使うといいんじゃね
81 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 15:10:33 ] >>79 freepg.fc2web.com/cpp/topic_vce_001.html www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/ この辺読んでみて 自分はPro版持ってるからやったことないけど
82 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 15:13:52 ] >>80 スタティックリンクできるっけ。 インストール不要なら検討の余地はあるね。
83 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 15:15:14 ] >>82 ライセンスまで含めてマジメに考えるとどうなるか分からん
84 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 15:15:25 ] てかC++Builder Explorerつかえばいいんじゃないか?
85 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 15:16:41 ] >>82 インストールは不要だね どうしても実行ファイルは大きめになるけど
86 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 15:37:07 ] >>79 freepg.fc2web.com/cpp/topic_wx_vc.html 0xcc.net/pub/uu-2004-08/ www.geocities.co.jp/SiliconValley-Cupertino/8526/wxWindows/license.html これもどうぞ
87 名前:デフォルトの名無しさん [2007/07/19(木) 16:11:41 ] 次のようにintとfloatが混在しているとファイルに正しく書き込めないんでしょうか? 読み出すとき値が壊れています・・・ for(k=0; k<100; k++) { fp.write(( char * ) &k,sizeof(unsigned int ) ); fp.write(( char * ) &x[k],sizeof( float ) ); }
88 名前:デフォルトの名無しさん [2007/07/19(木) 16:14:03 ] 87です すみません バイナリモードで開いていませんでした
89 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 16:22:32 ] >>88 というか…2行目の fp.write((char *)&k, sizeof(unsigned int)); もうこの時点で何をしたいのかよく分からない。 変数kのアドレスを出力してるの? 何のために? …俺が勘違いしてるのかな。
90 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 16:27:53 ] >>89 > …俺が勘違いしてるのかな。 うん。
91 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 16:40:25 ] 普通に見られる書きかただと思うけど、何と勘違いしたのだろう。
92 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 18:26:31 ] 確かによく使われる書き方だけどキャストしまくりでソースが汚れるからこういうのを考えました template <typename Rng, class OutStream> OutStream& binWrite(Rng& rng, OutStream& os) { using namespace boost::lambda; using boost::addressof; using boost::range_value; boost::for_each(rng, bind( &OutStream::write, &os, ll_reinterpret_cast<char*>( bind( addressof<typename range_value<Rng>::type >, _1 ) ), ll_static_cast<std::streamsize>( ll_sizeof( _1 ) ) ) ); return os; } 使い方は std::ofstream ofs("test.dat"); std::string a("abcdefg"); として binWrite(a,ofs);だけでおk どうよ?
93 名前:92 mailto:sage [2007/07/19(木) 18:40:35 ] すいません 横からserialization使えとか言われて気づいたので>>92 は見なかったことにしてくだしあ><
94 名前:デフォルトの名無しさん [2007/07/19(木) 22:56:36 ] VC++ 2005 Express で std::ofstream file("c:\\日本語ファイル名", std::ios::out | std::ios::binary | std::ios::trunc); とするとファイル名が文字化けしていまいます、ofstreamでは日本語ファイル名が使えないのでしょうか? プロジェクト設定をUnicode、マルチバイトどちらにしても結果は一緒でした
95 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 22:58:55 ] >ttp://miyano.s53.xrea.com/cgi-bin/sb/log/eid89.html だってさ
96 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 23:04:57 ] >>95 ありがとうございます setlocale(LC_ALL, "Japanese"); を呼ぶことで無事できました。 VCのバグっぽいですね
97 名前:94 mailto:sage [2007/07/19(木) 23:07:46 ] プロジェクト設定Unicodeでやってもだめだったのは L"ファイル名" としていなかったからでした
98 名前:デフォルトの名無しさん [2007/07/19(木) 23:43:15 ] VC++ 2005 Expressを使用しています。 画像表示に関する質問です。 PictureBoxに複雑な画像を描写しました(Setピクセル)。 その画像に、Drawlineで線を描きました(マウスmove等を使用)。 この線を書き直したいのですが、線を消すために DrawlineのWhitePenを使用すると、せっかく読み込んだ複雑な画像まで、 白抜きになってしまいます。 後から書き加えた線だけを消去したい場合は、 どのような方法で消去すればいいでしょうか? ご指導お願いします。 複雑な画像を一旦保存しておけばいいのかなぁ と思っているのですが・・・ よろしくお願いします。
99 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 23:45:05 ] >>94 次からは、文字列には頑張って TEXT("とりあえずTEXTつけときます") ってしとこうな。 それがいやならリソースにしとくれ それにしても、MBCSでも日本語きちんとコンパイルできるサービスパックを早くツクレカス>マイクロソフト
100 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 23:50:04 ] おまいらよ、まだ、VS2005の文字セットMBCSしているのか? いいかげん、海栗コードにしろよな。