1 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 20:07:56 ] スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。 過去ログ スレを勃てるまでもないC/C++の質問はここで pc11.2ch.net/test/read.cgi/tech/1167476845/ スレを勃てるまでもないC/C++の質問はここで 2 pc11.2ch.net/test/read.cgi/tech/1178503366/
652 名前:デフォルトの名無しさん [2007/10/31(水) 18:09:26 ] Win32環境+VS2005で開発を行っています。 ダブルクリックでファイルを開く処理に対応させようと頑張っていた所 Debugビルドでは成功したのですが、Releaseビルドにするとファイルを開かなくなりました。 (でもショートカットに開きたいファイル名を指定するとReleaseビルドでもきちんと開く) そこで処理を追っていくと、どうもInitInstanceメソッドが呼び出されていないようなのですが、似たような経験をされた方はいらっしゃらないでしょうか?
653 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 18:11:41 ] スレ違い
654 名前:652 [2007/10/31(水) 18:27:32 ] 了解しました、他スレに流れてきます。
655 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 18:59:54 ] グリッド状に3次元ボクセルが並んでいる座標を格納したファイルがあって 0 0 0 1 0 3 5 20 9 …(順番はメチャクチャ) ttp://up2.viploader.net/upphp/src/vlphp083780.jpg こういう感じに1層だけ取り出して計算処理。 終わったらその上の層だけ取り出して計算処理 ということをしたいのですが これって for(slice=0,slice<MAX;slice++){ while(fscanf(fp,"%d%d%d\n",x,y,z)!=EOF){ array[x][y][z]に層を格納 } 格納した層について計算処理 } という風に、計算したい層を取り出すために、毎回ファイルを読み込むという賢くない処理をしなくてはならんでしょうか もう少し賢いやり方をしたいのですが、アドバイスいただけませんか。
656 名前:デフォルトの名無しさん [2007/10/31(水) 19:28:37 ] kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5186.txt これに実験結果を入れたいのですが、どこに入れたらいいか分かりません。 教えてください。
657 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 19:30:04 ] >>656 コンパイルして、./a.out 実験結果 とでもすればいいだろ。
658 名前:wolf ◆8VH3XAqjlU mailto:sage [2007/10/31(水) 21:09:30 ] >>655 For your Reference. Managing Memory-Mapped Files in Win32 msdn2.microsoft.com/en-us/library/ms810613.aspx Beej's Guide to Unix Interprocess Communication(Ref. Memory Mapped Files) www.ecst.csuchico.edu/~beej/guide/ipc/
659 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 21:47:11 ] >>658 thanks for your advice but I don't mention accessing memory and that code was rough. so I have some mistake
660 名前:デフォルトの名無しさん [2007/11/01(木) 01:31:10 ] 「派生クラスのインスタンスを生成する時、newで生成しないと使えない」 と言われたのですが、何でなのかわかりません。 親クラス* p= new 子クラス; p->なんか関数(); これしか方法はないんですか?
661 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 01:39:13 ] >>660 そんな事はない
662 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 05:49:28 ] >>655 データ量にもよるが・・・ ファイルの読み書きと計算処理を分離し、 データはすべてメモリに読んでしまい、 計算処理はメモリ上にあるデータに対して行う。 いくつもの計算処理を済ませた後に、 メモリからファイルに書きだす。
663 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 10:38:55 ] 子クラス kokurasu; 親クラス* oyakuasu = &kokurasu; oyakurasu->NFunction();
664 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 16:13:54 ] >>662 さん レスありがとうございます。 小さいデータ量なら3次元配列に読み込んでしまえばいいのですが 量がメモリの容量を越えてしまうくらい大きいので… 2048×2048×2048の大規模なものや、それ以上を想定しています。。。 メモリに乗り切らない→1層ずつ処理→そのためには? という考えからきています
665 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 16:34:53 ] ファイルを何度もスキャンするくらいなら、 物理メモリに乗らないような巨大なサイズでも、 仮想記憶を使ってメモリ上に読んでしまったほうがマシかもよ。
666 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 17:00:46 ] >仮想記憶を使ってメモリ上に読んでしまったほうがマシかもよ。 仮想記憶で扱うということはこれまでやったことが無くて。 どこかわかりやすく参考になるところありますか?
667 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 17:02:15 ] >>666 ja.wikipedia.org/wiki/%E4%BB%AE%E6%83%B3%E8%A8%98%E6%86%B6
668 名前:デフォルトの名無しさん [2007/11/01(木) 17:15:27 ] 教えてください。 (Aが1)、かつ(Bが2)以外に処理を実行するっていう場合どう記述したらいいんですか? if((A==1)&&(B==2)){ } else{ 処理 } でいいのかなぁ?
669 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 17:17:15 ] ありがとうございます。 だいぶ難しそうな気配がしています。。。
670 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 17:19:27 ] if( (A!=1)&&(B!=1) ) 処理 でいんでない
671 名前:よろず [2007/11/01(木) 17:21:39 ] 募集してるよん♪ bloom@geocities.co.jp
672 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 17:22:21 ] if((A!=1)||(B!=2)) { 処理 }
673 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 17:22:36 ] よくねぇよ
674 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 17:23:05 ] >>668 ド・モルガンの法則でひっくり返せ。 A != 1 || B != 2
675 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 17:23:24 ] >>668 if( !(A==1 && B==2) ) { 処理 }
676 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 17:23:40 ] 更新してなかtったorz
677 名前:デフォルトの名無しさん [2007/11/01(木) 17:23:51 ] ありがとう || でやってみます
678 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 17:24:41 ] >>666 高々GiBオーダだろ。普通にmalloc()したらOSが勝手に確保してくれて、使うときに勝手にスワップアウトしてくれるよ。 OSがタコじゃなきゃ。
679 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 17:26:13 ] WindowsXPはタコですか?
680 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 17:26:41 ] >>677 果たして、>670で「(Aが1)、かつ(Bが2)以外」と読めるか? if (!(A == 1 && b == 2)) { 処理 } の方が読みやすいかも知れんぞ。 # ド・モルガンの定理を知らん香具師がメンテナンスするかもしれないんだし。
681 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 17:28:59 ] 「(Aが1以外)且つ(Bが1以外)」と読める
682 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 17:29:48 ] どっちも同じようにしか見えない俺は眼が腐ってる
683 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 17:30:11 ] だね
684 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 17:49:50 ] 「(Aが1以外)且つ(Bが1以外)」じゃないの?
685 名前:デフォルトの名無しさん [2007/11/01(木) 17:52:10 ] if( !(A==1 && B==2) ) { 処理 } こういう記述もできるんですね みなさんありがとう 勉強になりました
686 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 18:25:35 ] >>680 読みやすさとかより !(A == 1 && b == 2)) と (A!=1)&&(B!=1) は別物なんだが。
687 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 18:30:38 ] そりゃそーだ Bの値が違う
688 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 18:47:54 ] >>678 ためしにmallocで 1024 1024 1024 を確保して解放しただけで仮想メモリの警告が出ましたが 確保をしているような感じでした。 ただ、合計4GBくらいになるはずのものが2.5GBで解放されたのが気になりますが。。。 もう少し別のやり方調べてみます。。。
689 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 19:12:47 ] >>688 Windowsの32ビットアプリケーションは、 3GiBオプションを付けない限り、ユーザアドレス空間2GiBしかないよ。 その2GiBをプログラム本体や、WindowsのDLL、スタックを差し引いた残りが、 およそmallocほか動的メモリ確保で使用できる領域になる。 それ以上使いたければ、64ビット化するか、2GiB未満に小分けして処理する必要がある。 いずれにせよ、同じ仮想記憶を使うのでも、 単純にmallocでメモリを確保するよりは、メモリマップドファイルにしたほうがいいと思う。
690 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 20:02:10 ] >>687 それだけ?
691 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 20:34:15 ] うぜ
692 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 22:00:13 ] >>689 動的メモリになると2GBの壁がでるのですね… それだと必然的に1024^3はムリになるので、目的のは出来ないかもしれません ファイルにランダムアクセスできればいいのですが… それかファイルをソートする方がはやいのかも
693 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 22:05:34 ] >>692 ランダムアクセスはできるよ テープじゃないんでしょ
694 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 22:07:58 ] テープですよ ランダムアクセスはできるけど
695 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 22:17:07 ] >>692 流れをあんまり理解してないけど、 ファイルにランダムアクセスってfseekとかその手の話?
696 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 22:19:59 ] まさか数GBのファイルを全部メモリに読むつもりとか
697 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 22:20:04 ] そのファイルはテキスト?
698 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 22:21:37 ] 層毎に読み込むのがいいよ
699 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:21:22 ] >>655 のことです 層ごとに読み込みたくて。 15GBくらいのデータを縦軸・横軸の層で読み込んで計算したくて伺っていました。 テキスト形式のデータで要素数にして数億個のデータです。
700 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:39:36 ] なんで一度に読み込みたいのかがわからん。 ある層の計算をするときは、他の層がどうなってるかは知らなくていいんじゃないの? 逐次的に計算できるなら、何億個、何兆個データがあっても関係ないでしょ?
701 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:40:03 ] 層順にソートしておくとか
702 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:44:40 ] 何層あるのか知らないけど、元ファイルを順次読み込み、層ごとのファイルに分ける。 slice001.txt, slice002.txt, ... みたいに。 で、それぞれのファイル毎に層毎の計算をする。 で、ダメ?
703 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:45:52 ] >>700 一度に読み込まないための方法を探してるんです。 >>701 それは考えました。 縦方向に層を作るのであればZだけでソートしたファイルを読み込み処理ですむのですが 横方向に層も必要で 最悪2つの15GBのデータを作らないといけなくなりそうです。
704 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:47:23 ] あー、2k*2k*2k程度を想定してるのか。 層ごとに分けてしまえば次元が一つ減るから、オンメモリでいけるでしょ。
705 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:48:41 ] めんどくせーから、64bitOSにしちゃえよ
706 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:49:57 ] めんどくせーから、諦めちゃえよ
707 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:51:50 ] めんどくせーからDBにしとけ
708 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:56:27 ] >>703 > 横方向に層も必要で おいおい、必要な情報は一度に開示しとけよ。
709 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:59:58 ] >>708 はい、すみません。 縦方向の層/横方向の層 でスライス作って計算するのが一番速そうですね。 始めは15GBの3次元の塊から、層を2次元配列で確保していくつもりでしたが レスありがとうございました
710 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 00:43:29 ] > (Aが1)、かつ(Bが2)以外に処理を実行するっていう場合どう記述したらいいんですか? どーみても、 if ( (A==1) && (B!=2)) { 処理 } だろ。 それとも日本語が不自由なのか?
711 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 00:45:03 ] 668の例を見てそう言えるお前のほうが不自由
712 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 00:45:12 ] うは亀レス 日本語が不自由なんですね
713 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 00:45:41 ] もうその話題終わったよ
714 名前:デフォルトの名無しさん [2007/11/03(土) 01:41:40 ] 実体のまだないData型のpDataAというクラスが、ポインタで関数DataA_Setupにわたってきます。 DataA_Setupの中で、実体化(new)して、いろいろ値をつめます。 次に、このpDataAを、別の処理関数DataA_Modifyにわたして中身を書き換えるのですが、 DataA_Modifyのインタフェースが、Data型の参照を受けているのです。 int DataA_Setup(Data* pDataA) { pDataA = new Data(); // pDataAにいろいろ値をセット DataA_modify(ここが、Data型の参照になっている);
715 名前:デフォルトの名無しさん [2007/11/03(土) 01:45:14 ] >>714 の続き で、DataA_modifyにpDataAを渡すには、どのように変換すればいいのでしょう。 Data rDataA = &pDataA; とすると、 error: conversion from `Data**' to non-scalar type `Data' requested とエラーが出ました。
716 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 01:48:22 ] *pDataA でいいんではないの
717 名前:デフォルトの名無しさん [2007/11/03(土) 01:51:06 ] ありがとうございます。 DataA_modify( *pDataA ); で通りますか?
718 名前:デフォルトの名無しさん [2007/11/03(土) 02:35:35 ] ゲームに制限時間を付けたいんですが、どうすればいいのか わかりません。
719 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 04:52:32 ] >>714 > 実体のまだないData型のpDataAというクラスが 「クラス」??? 基本的なことを理解していないっぽいな。 > ポインタで関数DataA_Setupにわたってきます。 実体がないのに、どうしてポインタが渡せるんだ? そして案の定、 > int DataA_Setup(Data* pDataA) > { > pDataA = new Data(); なんていう変なことをしている。 引数の型はData*ではなくData**か、Data*&にしないと。 pDataAに何を代入したって、DataA_Setupの呼び出し側には伝わらないぞ。 > Data rDataA = &pDataA; わかってなさすぎ。
720 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 08:39:58 ] >>718 あなたがどんなゲームをどのように作っているのか判らないので「こうしなさい」などとおこがましいことは言えません。
721 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 16:40:26 ] >>714 >>719 のとおりだなあ。 とりあえずC++ Primerと初心者本を買って理解することをお勧めする。
722 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 16:35:46 ] 二次元配列で foo[たて][よこ] を走査したいのですが どんなループが一般的にやられてますか?
723 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 16:39:32 ] ふつう for(y = 0;y < たて;y++){ for(x=0;x < よこ:x++){ } }
724 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 16:40:09 ] 二重ループ
725 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 16:58:20 ] >>723-724 ありがとうございます。 あとすいません、言葉足りなくて foo[][]を 行だけ取り出して、計算→次の行へ。 列だけ取り出して、計算→次の列へ ということです。
726 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 17:01:18 ] >>725 for(y = 0;y < 列;y++){ for(x=0;x < 行:x++){ } } for(y = 0;y < 行;y++){ for(x=0;x < 列:x++){ } }
727 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 17:05:07 ] …そうだ。そうですね なんか変に考えすぎてました。 ありがとうございます
728 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 02:03:47 ] if(条件1){処理1} else if(条件2){処理2} else if(条件3){処理3} else if(条件4){処理4} else{処理5} という処理をやりたいのですが、ネストは3までと決められているので、このままの形では書けません なんとかスマートにネストを減らしたいのですがどうするのがいいのでしょうか 今は仕方なくこんな風に書いてるんですが、不格好だし面倒くさいし… int flg; if(条件1){flg=1}else{DoNothing();} if(条件2){flg=2}else{DoNothing();} if(条件3){flg=3}else{DoNothing();} if(条件4){flg=4}else{DoNothing();} if(条件5){flg=5}else{DoNothing();} switch(flg) { case 1:処理1;break; case 2:処理2;break; case 3:処理3;break; case 4:処理4;break; case 5:処理5;break; default:DoImpossible();break; }
729 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 02:07:49 ] ごめんなさい 条件の方のflg=*にセミコロン忘れました
730 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 02:17:22 ] >>728 ネストが3ということだが、一番はじめに提示したソースはネストは1じゃないか? 普通かどうかしらんが、俺の感覚でネストが深くなるといわれると if ( XXX ) { if ( YYY ) { if ( ZZZ ) { } } } ということだと思うんだが?
731 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 02:20:14 ] 一応、回避策(?)も提示してみる。 int Check( void ) { if ( 条件1 ) return 1; if ( 条件2 ) return 2; if ( 条件3 ) return 3; if ( 条件4 ) return 4; if ( 条件5 ) return 5; return -1; } /**/ switch( Check( ) ) { case 1://以下略 }
732 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 02:22:28 ] else if{〜}はelse{if{〜}}のことなので、最初のソースのネストは5なんです 正直納得いかないんですが、コードチェッカがそう言って怒るので仕方ありません
733 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 02:28:20 ] >>731 結局条件を数値に直してswitchしかないんですかね elseは必ず書くことになってるので正直あまり変わらない気がします。ごめんなさい
734 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 02:33:01 ] そのコードチェッカーは必ず、例外なく、何があっても、守らなければいけないもの? 可読性や汎用性やテスト容易性まで犠牲にしてまで守る利点はあるの? っていっても、守らなきゃならない状況ってのはあるんだろうけど・・・ 関数分割をなるたけして、厳しい部分はswitchに落とすしかないかな?
735 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 02:40:00 ] >>733 elseはcase -1:でよくね?-1じゃなくてもなんでもいいけど。 条件の内容次第ではうまくいく場合もあるよ。 例えば、文字列比較によって関数呼び出しを行うなら・・・ typedef sturct { const char * str; void ( * func )( void ); } T_HOGE; const T_HOGE Hoge[ 3 ] = { { "right", Func1 }, { "center", Func2 }, { "left", Func3 }, }; for ( cnt = 0; cnt < 3; cnt++ ) { if ( strcmp( Hoge[ cnt ].str, input ) == 0 ) { Hoge[ cnt ].func( ); } } 条件が複雑になれば厳しくなるけど・・・
736 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 02:41:57 ] bool notYet = true; if (notYet && condition1) {process1; notYet = false;} if (notYet && condition2) {process2; notYet = false;} if (notYet && condition3) {process3; notYet = false;} ...
737 名前:1/2 mailto:sage [2007/11/14(水) 05:31:15 ] #include <utility> #include <vector> #include <iostream> #include <functional> struct func_holder : public std::unary_function<void,void> { typedef result_type (*func_type)(argument_type); func_holder( func_type f ) : m_func(f) {}; result_type operator()(argument_type) const { return (*m_func)(); } private: func_type m_func; }; struct pred_holder : public std::unary_function<int, bool> { typedef result_type (*func_type)(argument_type); pred_holder( func_type f ) : m_func(f) {}; result_type operator()(argument_type a) const { return (*m_func)(a); } private: func_type m_func; }; template< class Pred, class Func > struct dispatcher : public std::unary_function<typename Pred::argument_type, void> { typedef std::pair<Pred, Func> pair; typedef std::vector<pair> vector; void add(pair const& p) { v.push_back(p); } void operator()(argument_type a) { for (vector::iterator i = v.begin(); i < v.end(); ++i) { if ( i->first(a) ) { i->second();break; } } } private: vector v; };
738 名前:2/2 mailto:sage [2007/11/14(水) 05:34:32 ] void out1() { std::cout << "out1!\n"; } void out2() { std::cout << "out2!\n"; } bool pred1(int i) { return i > 0; } bool pred2(int i) { return i == 0; } int main() { dispatcher<pred_holder, func_holder> dis; dis.add( std::make_pair(&pred1, &out1) ); dis.add( std::make_pair(&pred2, &out2) ); dis(0); } .*_holderで指定する関数の方を変えてやったり、predのargumentとして状態を保持した構造体を渡すようにすれば もっと複雑な条件でも使えるかもしれない boostを使えば使い勝手が良くて読みやすいのが作れる?
739 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 16:11:34 ] >>734 必ず守らなければならないとしたときの利点: お前のように、ごちゃごちゃ文句言う奴に対応する時間を取らなくて済む
740 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 16:18:34 ] >>739 必ず守らなければならないとしないときの利点: お前のように、ごちゃごちゃ文句言う奴に対応する時間を取らなくて済む
741 名前:738 mailto:sage [2007/11/14(水) 17:59:11 ] よく考えるまでもなく激しく車輪の再発明してる気になるなぁ(それ以前にC++) これと同じようなものが「boostにあるよ」とか「lokiにあるよ」とか「俺が作ったよ」とかあれば 是非情報をおながいします あとこういうのって、デザパタ用語で責任の連鎖パターンっていうんですか?
742 名前:デフォルトの名無しさん [2007/11/14(水) 21:50:49 ] コンソール上で動かすプログラムを作っています。 画面消去の方法で『ESC [2J』と解説されてるサイトが多いのですが、 XPではエスケープ・シーケンスが使えないようなのです。 他に画面消去に使えるような命令はないでしょうか? コンソール画面上をスペースで塗り潰す以外の方法は無いのでしょうか。
743 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 21:51:38 ] プログラムを書くというのは、特殊化だと思う。 だから、汎用に書くのは間違い。 可読性を損なわないようにベタっと書くべき。
744 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 21:55:55 ] DRY原則は守ってね
745 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 22:09:17 ] >>742 Win32APIスレで質問すべし。
746 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 22:13:36 ] APIじゃなくてもclsでよくね?
747 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 22:18:55 ] そこでPDCursesですよ 単にコンソールIOのシステムコールをCursesのインターフェースでラップしただけだけど そのまま使うよりは使いやすいような使いにくいような
748 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 22:25:05 ] 血圧が高くて疲労感が取れません。
749 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 03:23:46 ] A.cpp CSample *Sample = 〜〜〜 B.cpp Sample->Loop(); という風にしたいんですが どうにかしてB.cppでSampleオブジェクトを使う方法はありませんか
750 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 04:30:17 ] >>749 グローバル変数
751 名前:デフォルトの名無しさん [2007/11/15(木) 04:45:48 ] windowsでC言語の開発環境を整えようと思いbcpadをダウンロードしようとしたのですが、 ベクターでダウンロードできなくなっており、自身で探してみたのですが、ダウンロードできるサイトが見つかりません。 ご存知の方がいらっしゃいましたら教えてください。
752 名前:デフォルトの名無しさん [2007/11/15(木) 10:28:55 ] >>751 シェアウェアにするとかなんとか書いてるから フリーのVC++2005expとSDKでやれば? ANSIIの関数で複数の関数が 警告で「安全性がなんたらかんたら・・・」って警告 でるけど、別に関数の使い方間違ってなかったら 問題無いし、C言語の開発環境としては VC++2005で十分気軽に使えるでしょ