1 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 23:15:45 ] エスケープシーケンスやWin32APIなどの環境依存なものでもOK。 ただしその場合、質問者は必ず環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.70【環境依存OK】 pc12.2ch.net/test/read.cgi/tech/1258873470/ 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm codepad.org/ (コンパイルもできるし出力結果も得られるのでお勧め) ◆ソースのインデントについて 半角空白やTABでのインデントはスレに貼ると無くなります。 そのため、アップローダーに上げるのも手ですが直接貼る場合は、 全角空白か に置換すると見栄えだけはよくなります。
129 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 23:49:40 ] >>128 は? 頭おかしいの?
130 名前:デフォルトの名無しさん [2010/02/05(金) 23:50:12 ] >>128 Win32API質問箱 Build86 pc12.2ch.net/test/read.cgi/tech/1265350980/
131 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 23:52:04 ] どっちかというとMFCのほうだな
132 名前:デフォルトの名無しさん [2010/02/06(土) 02:27:22 ] PaintDCの描画領域のクリア方法教えて
133 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 10:22:50 ] InvalidateRectもしくはValidateRectのことか それともFillRectのことだろうか
134 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 13:22:55 ] template< int Foo > class CHoge { public: CHoge(int ini) : m_hoge(ini){} int m_hoge; char m_foo[Foo]; static const CHoge<Foo> sc_Zero; }; //const CHoge<Foo> CHoge<Foo >::sc_Zero = CHoge<Foo>(0); // Foo : 定義されていない識別子です。 sc_Zero を初期化したいんだけど,どのようにすればいいでしょうか?
135 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 13:38:26 ] Fooの値は決まる必要があるんじゃね? template< int Foo > class CHoge { public: CHoge(int ini) : m_hoge(ini){} int m_hoge; char m_foo[Foo]; static const CHoge<Foo> sc_Zero; }; CHoge<1> h(10); const CHoge<1> CHoge<1>::sc_Zero(h);
136 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 13:41:57 ] template < int Foo > const CHoge<Foo> CHoge<Foo >::sc_Zero = CHoge<Foo>(0);
137 名前:134 mailto:sage [2010/02/06(土) 13:51:57 ] >>135-136 ありがとうございます.初期化出来ました.
138 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 17:31:35 ] 前方宣言をすると普通に#includeするよりも、コンパイルが速くなりますか?
139 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 17:33:57 ] 前方宣言はコンパイル依存性を減らしたりするために あると思うんだけど
140 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 17:39:20 ] >>138 コンパイルが速くなるっていうよりも、コンパイルしなおさなければいけなくなるファイルが 減るっていうのが正しいかと。
141 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 18:05:26 ] 前方宣言が必要なパターン class B; class A { B b; }; class B { A *a; }; あとはpimplイディオムで少し似た使い方したり。
142 名前:138 mailto:sage [2010/02/06(土) 18:06:41 ] >>140 やっぱり、そうだよね thx
143 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 22:06:12 ] newとmallocは似たような動作をしますが、 バックグラウンドではnewがmallocを呼び出しているのですか?
144 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 22:09:27 ] >>143 そういう実装も多いけども、そうとは限らない。 それが問題になるようなプログラムを書くべきではないし、書く必要も無い。
145 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 22:48:57 ] WinAPIを使わずにマウスをプログラム側から操作するにはどうしたらよいでしょうか?
146 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 22:50:12 ] そういうライブラリを探す。
147 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 22:57:22 ] >>145 それは不可能だろう。 ラッパライブラリがあれば可能だろうが、 そのラッパもやはりWinAPIは使っているだろうな。
148 名前:デフォルトの名無しさん [2010/02/06(土) 23:43:39 ] VS2005、C/C++でコントローラ(Joystick)の状態を取得するにはどうすれば良いのでしょうか? 調べても中々出てこないみたいなので。助けてください。 プロジェクト設定はWin32コンソールアプリケーションです。 ひどいくらい初心者ですが、よろしくお願いします。
149 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 23:53:46 ] GetJoystickState
150 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 00:13:35 ] >>148 Windows APIか、DirectXのDirectInputを使う Joystick Reference (Windows) ttp://msdn.microsoft.com/en-us/library/dd757121(VS.85).aspx DirectInput ttp://msdn.microsoft.com/en-us/library/ee416842(VS.85).aspx ttp://msdn.microsoft.com/ja-jp/library/bb219802(VS.85).aspx
151 名前:デフォルトの名無しさん [2010/02/07(日) 00:30:49 ] DirectInputは使っています。 printf("%d\r\n",js.lX); で一応、初期値の -8 とプリントされているのですが、 動かしても変動がありません。どうも倒しながらキーボードを入力すると数値が変動するようです。 現在はキーボード入力で入力したときだけOpenGLが再描画されるのですが これをJoystickを倒した時に再描画されるようにするにはどうすればよいのでしょうか? switch (key) { case 'd': { Point NextPos( PosX+0.2, PosY ); if( !ColCheck( NextPos ) )PosX +=0.2; glutPostRedisplay(); } ソースはこんな感じになっています。キーボード入力時のみの再描画ではなく、常に?描画するにはどうすればよいのですか? 初心者ですみません。書き込んでいて何を言ってるのかわからなくなってきました。
152 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 00:45:10 ] OpenGLスレで聞いてみれば?
153 名前:デフォルトの名無しさん [2010/02/07(日) 00:50:10 ] はい、そうしてみます。ありがとうございました。
154 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 02:47:37 ] void *型から何かの型へのポインタへキャストする時にそれが有効か調べるいい方法はあります? 今のところハッシュにアドレスとtype_infoのペア保存しておくという微妙な方法しか思いつきません
155 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 07:03:04 ] >154 dynamic_cast かな。 でもどっちかっていうと型判別しなきゃいけないこと自体がどっかおかしいような気がする。
156 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 07:19:04 ] void * にdynamic_castは無理
157 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 08:14:09 ] C++にはリフレクションがないから無理だろ
158 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 10:01:05 ] >>154 shared_ptr があるよ
159 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 11:15:33 ] struct hoge { int bar1; char *buf; int bar2; }; こんな構造体のbufに文字列入れるなりmallocするなりするとメモリ的にはどうなるの? bar2がその分後ろにずれたりするの?
160 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 11:22:14 ] template<size_t T_size>struct hoge { int bar1; char buf[T_size]; int bar2; };
161 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 11:22:50 ] >>155 void*なんか使わないほうがいいと言えばそのとおりなんですが スクリプトと拡張型のポインタをやり取りするのに一回void*に変換されて型情報がなくなってしまうのです スクリプト側で変なことしなければ問題はないんですが、間違えるとエラーも出せずに落ちてしまうのでどうにかできないかな、と >>156 ,157 やっぱり無理・・・でしょうか >>158 すいません 詳しくお願いできますか?
162 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 11:45:30 ] void*のポインタ先をデータの生ポインタではなく、 struct ptr_holder { void *ptr; type_info ty; }; のポインタとかにはできないの?
163 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 11:54:49 ] >>161 void*を何かのクラスに変換するのはプログラマの責任になるんだね。 変換方法はプログラマから決めないといけないけど、1種類のクラスしか扱えないのが実情。 そこで、複数のクラスを扱うには、>>162 のように1種類のクラスを挟んでクラスを識別できるようにして変換する。 それをやっているのが>>158 の方法。shared_ptr<void>へのポインタshared_ptr<void>*をvoid*として渡し、shared_ptr<void>*に戻す。その後、shared_polymorphic_cast<Hoge>(*Ptr);で変換。型が違えば例外が投げられる。
164 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 11:56:54 ] >>159 ずれない +------+ 0x11111100 | bar1 | |------| 0x11111104 | buf | ---> NULL |------| 0x11111108 | bar2 | +------+ ↑こんな感じのが ↓こんな感じになるだけ +------+ 0x11111100 | bar1 | |------| 0x11111104 | buf | ----+ |------| | 0x11111108 | bar2 | | +------+ | +------+ | 0x22222200 | 文字列 | <--+ +------+
165 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 12:13:53 ] >>163 shared_ptrのその使い方はshared_ptrの本来の使い方の一部にしかすぎない。 shared_ptrの本来の使い方を知った上で使うべき。
166 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 12:13:58 ] >>162 残念ながら、ptr_holder*をvoid*にして渡すという形になりますので 結局のところvoid*がptr_holder*に戻せるかという、ほぼ同じ問題に戻ってしまいます >>163 やはりvoid*がshared_ptr<void>に変換できる保証はないので、完全では無いですね でも同一プロジェクト内でならshared_ptrに統一することは可能なので試してみたいと思います みなさんレスありがとうございました
167 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 12:39:16 ] >void*がptr_holder*に戻せるか そこは当然ptr_holderしか使わないという縛りが必要になる
168 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 12:50:54 ] void*やshared_ptr<void>ではなく、boost::any(あるいはany*やshared_ptr<any>)にしたらいい。
169 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 15:23:09 ] LinuxでC++勉強したいんだけど ライブラリって何が標準なの?
170 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 15:25:02 ] gccとかのこと?
171 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 15:25:38 ] >>169 まずは C 標準ライブラリと C++ 標準ライブラリだな。
172 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 15:29:38 ] >>171 boostというのが標準ですか?それともSTLというのですか?
173 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 15:35:08 ] >>172 boost は標準ではないが、将来の標準に含まれるものを含んでいる。 STL は昔の名前で、今は C++ 標準ライブラリに含まれている。
174 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 15:38:54 ] >>172 boostは標準ライブラリではない。 だが信頼性・移植性のある外部ライブラリだと思う。 あとboostのすごいところは最先端をめっちゃ追求しているところかな。
175 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 15:45:36 ] boostは盛りだくさんだから、ひとくくりで全部OKとかダメだとは言いにくいな。
176 名前:progress_display mailto:sage [2010/02/07(日) 15:49:25 ] >>175 私のことお呼び?
177 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 16:40:18 ] 昨日違うスレで質問しましたが、質問させてください public void setXXX(Foo* f)というメソッドがあった場合、 1.setXXX(f);→fはポインタ 2.setXXX(&f);→fはポインタではなく、fのアドレスを渡している 普通にプログラミングをした場合は、1 or 2のどちらでも大丈夫だと思います しかし、GUI関係をプログラミングした場合は、2の方法はダメな可能性が高いと思うのですが 結局はGUI Tool Kitに依存するといいうことでしょうか?
178 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 16:47:07 ] fがFooのポインタなら1だし、Fooのインスタンスなら2 ツールキットとかそういう問題じゃない そもそもpublic void setXXXは通常なら構文エラー
179 名前:177 mailto:sage [2010/02/07(日) 16:51:15 ] >>178 1はFoo* f = new Foo(); 2はFoo f; で宣言しています >そもそもpublic void setXXXは通常なら構文エラー 何故?
180 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 16:58:25 ] そのGUIオブジェクトがローカルスコープ限りで削除されるような場合は別に2でも問題ないと思うけれど デバイスコンテキストとかはそういう使い方をしそうだがウィンドウとかはあまりそういう使い方をしないだろう
181 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 17:06:54 ] >>179 エラーってのは、publicの後ろにコロンが付いてないだけのことだと思う。
182 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 17:06:54 ] >>177 > GUI関係をプログラミングした場合は、2の方法はダメな可能性が高いと思うのですが なんで? 意味わかんない。 可能性が高いとかグダグダ言ってないで、関数の仕様を確認すればいいのに。
183 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 17:15:50 ] スタックやヒープといったメモリ領域はご存じ?
184 名前:177 mailto:sage [2010/02/07(日) 17:56:51 ] >>180 それもそうですね >>181 java出身なもので、うっかりやってしまいました >>183 yes
185 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 18:14:18 ] 177がなんでそんな疑問を持ったかのほうが気になる そもそも実引数fの型がFOOへのポインタだとしたら 上の1と2は全く同じ意味だというのは分かってる?
186 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 18:17:44 ] 185は忘れてくれ
187 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 18:21:54 ] >>185 ドンマイ。たまにうっかりしちゃうよな。
188 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 18:39:49 ] >>177 は何かを勘違いしてる気がする。 public : void setXXX(Foo* f); Foo fOrg; Foo* f = &fOrg; 1.setXXX(f);→fはポインタ 2.setXXX(&fOrg);→fOrgはポインタではなく、fOrgのアドレスを渡している これでどっちも同じになるんだが。
189 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 18:47:44 ] >>188 いや、たぶんそれ自体は理解してるんじゃないかな GUIアプリで、長期間あるオブジェクトを使うような場合に、 ヒープにとるべきか(1)スタックにとるべきか(2)という質問なんじゃないの
190 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 18:54:41 ] じゃあ、インスタンスの寿命を気にしてるってことか。 そんなのJavaもC++も一緒じゃないの? スコープを抜けたらデストラクタが実行されるでしょうよ。
191 名前:190 mailto:sage [2010/02/07(日) 18:56:52 ] ごめん違った。Javaはfinalizeがいつ実行されるのか分からんのね。
192 名前:177 mailto:sage [2010/02/07(日) 19:11:12 ] >>189 その通りです。そういう質問です ttp://gihyo.jp/dev/feature/01/qt/0003?page=2 >1.子ウィジェットのメモリ解放の自動化 を読んでいたら疑問が湧きました >>188 には↓と書いていますが、 >これでどっちも同じになるんだが。 1.Foo fOrg;←スタックにインスタンスが確保されるハズ 2.Foo* f = new Foo();←ヒープにインスタンスが確保される 2の方法だとヒープにあるインスタンスはdeleteしないと削除されませんが、 1の方法だと自動的に削除されるのでは?と考えました もしも、1の方法で自動的に削除されなかった場合、 スタック(first in first out)なので「他の変数も削除されなくなる可能性」があるんじゃないかな〜と わかりずらくて、スマソ
193 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 19:18:21 ] 1のやり方で自動的に削除されるよ f自体は削除されるが fのメンバにポインタがあった場合 そのポインタがさしてる先が削除されるかは ちゃんとそういう処理を書いたかってことによる
194 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 19:20:45 ] いや、スタックってLIFO: Last In First OutまたはFILO: First In Last Outだから。 スタックに確保したインスタンスは、スコープを外れれば自動的に削除されます。 つまりスコープを外れない限りは自動的に削除されることは無い。 削除されないならそのシステムが腐ってる。 LIFOをイメージ出来れば今回の疑問は解決するはず。
195 名前:177 mailto:sage [2010/02/07(日) 19:35:38 ] >>193-194 なるほど、いろいろと勝手にやってくれて やってくれなかった場合はシステムが腐っているってことですね --------------------------------------------------------------------- qt4を参考に、適当に考えてみたコードなのですが class MainWindow { //ウインドウ関係のクラス public: void setWindowTitle(string* s); void init() { string s = "これの方法は安全なのか?"; mainWindow.setWindowTitle(&s); mainWindow.show(); //guiのイベントループを開始する } mainWindowが終了した段階で、MainWindowがstring sをdeleteする また、mainWindow.show();はブラックボックスかされていて、 init()の方が最初に終わるかもしれないという条件の場合 //かなり、腐っている気がするけど string s;はやっぱり、string *s = new string("テスト");とした方がいいんですね? 最後にこの質問だけ教えてください
196 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 19:38:41 ] 「1の方法で自動的に削除されなかった場合」ってどういう状況でそうなると思った? システム的には、>>194 の通り、スコープを外れたら自動的にデストラクタが呼ばれる。 >>193 の言うようにそのデストラクタ内の処理で必要なものを解放していなければメモリリークになる。 Javaみたいに、オブジェクトがどこからか参照されている間は削除されないなんてことはないので、 もしsetXXX(&f)することで生存期間が伸びるとか思ってるなら間違い。 無効なアドレスに対してアクセスが発生して、運が良ければ落ちるし、最悪の場合は黙って動き続けることに…
197 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 19:39:48 ] >>195 string*はやめてconst string&で受け取った方がいい MainWindowにWindowTitleのメンバを用意して、 コピーコンストラクタでコピーするべき
198 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 19:41:20 ] コピーコンストラクタは間違いだった。
199 名前:177 mailto:sage [2010/02/07(日) 19:56:45 ] >>196 >Javaみたいに、オブジェクトがどこからか参照されている間は削除されないなんてことはないので、 >もしsetXXX(&f)することで生存期間が伸びるとか思ってるなら間違い。 なるほど、それが聞きたかった わかりました、ありがとうございます >>197 >string*はやめてconst string&で受け取った方がいい うーん、それは危なくないですか? >init()の方が最初に終わるかもしれないという条件の場合 という条件があるので
200 名前:196 mailto:sage [2010/02/07(日) 19:56:46 ] 更新してなかった >>195 の条件ならどっちもダメ newした場合は自分でdeleteしなきゃいけないので、メンバ変数とかに持っておく必要がある >>192 のQtの場合は、親ウィジェットから辿れる子ウィジェットについては、 親ウィジェットのデストラクタ内でdeleteを呼んでくれてるってことだと思う そういうフレームワークを使うなら自分でdeleteする必要はない(というかしたらまずい) あと直接関係ないけど、 スタックを使う場合は、Javaには真似できないRAIIって技法があるから調べてみると面白いかも ヒープの場合はスマートポインタ(boost::shared_ptrとか)を使うと安全度が高まる
201 名前:177 mailto:sage [2010/02/07(日) 20:07:03 ] >>200 >Javaには真似できないRAII これ調べておきます >mainWindowが終了した段階で、MainWindowがstring sをdeleteする こういう条件があるので↓は気にしなくていいのでは? >newした場合は自分でdeleteしなきゃいけないので、メンバ変数とかに持っておく必要がある
202 名前:196 mailto:sage [2010/02/07(日) 20:15:39 ] >>201 すまん、見落としてましたw じゃあnew以外ないね(逆に、スタックに確保したインスタンスをdeleteするのは駄目)。 ただ、関数レベルでそんな実装するのはC++的じゃないので、普通ないとは思うけど。
203 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 20:26:02 ] C++を習得する場合、 Java→C++よりC→C++の流れの方がやっぱりまともだな
204 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 20:28:11 ] なぜわざわざ荒れそうな方向へ持っていく
205 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 20:30:31 ] >>204 そういう荒れそうな発言は、メッ!ですよ
206 名前:177 mailto:sage [2010/02/07(日) 20:32:25 ] >>202 いろいろと、ありがとうございました
207 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 20:33:14 ] >>203 Cはクラスがないじゃん だから面倒くさい
208 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 20:34:52 ] これがゆとりか…
209 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 21:09:47 ] 2ちゃんねるブラウザで一番難しい所は、スレを表示する機能だと思うんだよね しかし、既存の専ブラはそれをどうやって解決しているのか?って所が問題
210 名前:209 mailto:sage [2010/02/07(日) 21:13:17 ] ごめん、誤爆した
211 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 21:36:08 ] C++を学ぶのにCを学ぶ必要はないよ Cの古くて危険なやり方はやらない方がいい
212 名前:デフォルトの名無しさん [2010/02/07(日) 21:48:26 ] www1.axfc.net/uploader/Sc/so/80610.zip CodeSynthesis XSD/eのサンプルプログラムをVisual C++ 2008 Express EditionのIDE上でビルドしたいのですが、リンカエラーが 大量に出てしまい出来ません。うpしたのはXSDEのライブラリとサンプル1つだけ取って小さくしたものです。 nmakeだとビルド出来るのですが、IDEの「既存のコードからプロジェクトを作成」で作成したプロジェクトでビルドすると失敗してしまいます。 www.codesynthesis.com/products/xsde/
213 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 21:51:40 ] >>211 その古くて危険なもので、今現在もどれほど多くのものが作られているか。 バカには使いこなせない、って点では確かにC++以上だとは思うけどな。
214 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 21:56:39 ] C++はポインタ操作をクラス内に隠蔽できるメリットを理解して使ってる人はどれくらいの割合いるんだろうか。 Cを知らずにSTLをいきなり使ったほうが幸せになれるのではないかと思う今日この頃。
215 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 22:00:19 ] >>213 CはCで今でもあちこちで使われているのは俺も同意だけど、それとこれとは別。
216 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 22:03:24 ] そこでAccelerated C++ですよ
217 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 23:50:57 ] >>214 deleteをほとんど出さない入門書があってもいいのではないかと思うと気がある
218 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 02:48:34 ] 「〜の数」ってときにつける変数名、皆さんはどうしてますか。 たとえばりんごの数とか…。
219 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 03:13:16 ] num_apples
220 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 03:16:40 ] 人に薦めるならcountかなぁ。 自分のプロジェクトでは、数はnum、番目はnoを使ってる。 それ一緒や!元ネタ一緒やで!というツッコミは甘んじて受けよう。 大事なことはプロジェクト内での一貫性。(あと検索一意性) それさえ見失わなければhogeでも構わん。
221 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 03:35:36 ] >>219 >>220 レスありがとうございます! 私はthe number of 〜とか考えてました。でもこれじゃあなんかな〜…と。 これからはnum、noを一貫してつけていくことにします。
222 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 07:03:31 ] プログラムからPukiWikiのページを書き換えるにはどうやればいいですか?
223 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 07:59:00 ] HTTPでしかるべきPOSTメソッドを送信すればいいと思うけど
224 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 08:19:06 ] >>223 どうもです。 HTTPというと、C++で使うのはwininetですかね。 HTTPの事も調べないといけないなぁ。
225 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 08:52:24 ] 個数ならcount 量ならamountだな
226 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 09:26:00 ] 変数名スレでやれ
227 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 09:36:02 ] Boost.Asioを使ったHTTP通信のサンプルコードはよく転がってるよ
228 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 14:39:57 ] int n; cin >> n; char buf[4096]; for(int i=0;i<n;++i){ cin.getline(buf,4096); cout << buf << endl; } このプログラムで 1 hello world という入力をしてhello worldを出力したいんですが 1 Enterの時点でプログラムが終わってしまいます 最初のcin>>nで一つ目の改行が読まれていないみたいなので驚いたんですが getlineと通常の>>は混ぜて使わないほうがいいんでしょうか?
229 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 15:06:36 ] cin>>n は数値を読むだけで改行は読まないから 改行が来るまで吐き出させるとか char c; do { cin >> c; } while (c != '\n');