1 名前:デフォルトの名無しさん [2008/02/28(木) 00:01:39 ] エスケープシーケンスやWin32APIなどの環境依存なものでもOK。 ただしその場合、質問者は必ず環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.49【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1203478421/ 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
129 名前:デフォルトの名無しさん [2008/03/01(土) 18:49:02 ] コンパイラや標準ライブラリベンダが使用する識別子について質問です どうやら以下の条件を満たす識別子は使ってはいけないみたいですが 1 _で始まり、大文字が続く名前 2 __(アンダースコア2こ)を含む名前 3 グローバルスコープで _で始まる名前 ケースA int _Hoge;//ダメ(1に抵触) ケースB int __hoge;//ダメ(2,3に抵触) ケースC int hoge__hige;//ダメ(2に抵触) ケースD int _hoge;//ダメ(3に抵触) ケースE namespace foo{ _hoge;} //これはok? ケースF class Hage{ int _hoge;} //これはok? ケースEとFが合法なのかどうかわかりません この辺を指摘(警告とか)してくれるコンパイラとかないんですかね
130 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 18:54:36 ] ないでしょうね、なにろ標準ライブラリが使っているわけですから・・・ しかし、初めてみたなそのルール。 _ __ が最初につく名前は駄目だというのは知ってたけど。 129 ルールでは E F は合法っぽいけどね自分の知っているルールでは非合法だ。
131 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 19:06:45 ] >>129 _ に小文字が続く識別子に関しては、 グローバルネームスペースでのみしか禁止されていない。 でも、マクロでは禁止されてた気がする。
132 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 19:20:17 ] マクロはnamespace関係ないからな。
133 名前:デフォルトの名無しさん [2008/03/01(土) 19:44:45 ] __FILE__や__LINE__ってどのファイルに定義してあるのでしょうか??
134 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 19:49:30 ] 大抵は字句解析器が置換する。
135 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 19:50:50 ] tryブロックでthrowされた例外がcatchされてcatch内で例外処理が成された後、 正常系はどこから復帰になるのでしょうか?
136 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 19:52:05 ] 最後のcatch節の下
137 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 19:53:51 ] 復帰しないよ?そのまま続く。 try{ A; //例外発生 B; }catch( exception &e ){ C; //例外処理 } D; なら、正常は:A, B, D。 Aで例外時は:A, C, D。 もちろん、Cで例外が発生したり、throwしたりしたら別だけど。
138 名前:デフォルトの名無しさん [2008/03/01(土) 19:58:13 ] Win32APIのWindowsアプリケーション開発環境を作るためにPlatform SDKを インストールしたのですが、corewin_express.vspropsのデータの修正が出来 なくて困っています。 どうしたら、修正する事が出来るようになるのでしょうか? ちなみに、OSはvistです。
139 名前:デフォルトの名無しさん [2008/03/01(土) 20:01:49 ] visual stdio2008のexpressいれとけ
140 名前:デフォルトの名無しさん [2008/03/01(土) 20:13:48 ] >>134 ありがとうございます。
141 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 20:34:52 ] >>136-137 ありがとうございます tryブロックの範囲の選定も気をつけないといけないようですね またまた質問なんですが std::exceptionを継承してMyExceptionクラスを作ってそこに、例外発生時のログ取り機能を追加しました 不正な引数を取ってしまったときinvalid_argumentのような例外クラスを投げたいのですが 多重継承は色々ややこしいのでMyExceptionから派生させて相当の自作クラスを投げる やっぱりMyExceptionとinvalid_argumentの多重継承を行う どちらがよいのでしょうか?
142 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 20:39:40 ] ログ取り機能を例外クラスから分離した方がいいと思う。
143 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 20:41:52 ] MyExceptionからログ鳥部分を分離して、派生のない ExceptionLogクラスを作り、std::invalid_argumentと 派生した例外を投げる、みたいな。
144 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 22:02:07 ] >>142-143 必要な標準例外クラスから派生したmy標準例外クラスを作って そのクラスにログ取り機能クラスを保有させたほうがいい ということですよね? そのほうが系統だった例外クラスの構造になるのでしょうか?
145 名前:138 [2008/03/01(土) 22:11:41 ] 2005で作りたいのですが、いい方法はありませんか? どこかの設定をいじると書き込み可能になったりとかないんでしょうか・・・。
146 名前:デフォルトの名無しさん [2008/03/01(土) 22:12:05 ] 1クラスに2つ以上の機能を入れるのは一般によくないとされている
147 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 22:23:16 ] とりあえずロガークラスを作るのは確定としても、 以降をどう実装するかは結構悩みどころだな。 個人的には throw をマクロ LOG_THROW みたいなので置き換えて、 その中で例外を投げる前にログを取るようにするのがいいと思う。 マクロは使わずに済むなら使わないのが一番いいんだけど、 デバッグ時に __FILE__, __LINE__ を利用したり、 文字列化演算子を使って移植性の高い方法でクラス名を表示したりできるから、 ログ取りには便利だと思う。
148 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 23:38:52 ] 質問です。 ヘッダをインクルードせずに class Cls* pCls; と書くのはOKなんですけど namespaceで括られた場合に class Name::Cls* pCls; と書くと'Namne' : 識別子がクラス名でも名前空間名でもありません。 とエラーが出ます。 インクルードせずに宣言する方法ってあります?
149 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 23:45:13 ] >>148 こうかな namespace Name{ class Cls; } Name::Cls *pCls;
150 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 00:06:39 ] ところで標準例外std::exceptionの中身ってどうなってるんだろう?
151 名前:デフォルトの名無しさん [2008/03/02(日) 00:12:35 ] CLASS x={1,2,3,4,5,6}; はどのようにかけばジツゲンできますでしょうか
152 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 00:14:58 ] boost::arrayでも見れば?
153 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 00:26:06 ] >>150 実装依存としか。
154 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 00:27:31 ] >>152 要するにあれは構造体の初期化だよね。 コンストラクタが無ければクラスだろうが あのタイプの初期化ができることを利用しているという。
155 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 00:44:18 ] boost::arrayは {{ }} で囲わないとダメだろう。
156 名前:148 mailto:sage [2008/03/02(日) 00:49:28 ] >>149 無事宣言することが出来ました。 ありがとうございます。 お礼にオプーナを買う権利をあげます。
157 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 01:11:03 ] 「↓」を表示後、キー入力があるまで処理を一時停止させ、 キー入力があればそれに対応した動きをさせたいのですがどうすれば良いでしょうか? getch()だと入力待ちカーソルが邪魔になってしまい、困ってます
158 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 01:11:07 ] >>155 いや、必要ではない。
159 名前:デフォルトの名無しさん [2008/03/02(日) 01:13:39 ] >>157 別スレで環境依存だといわれたろ? なぜ環境を書かない
160 名前:157 mailto:sage [2008/03/02(日) 01:17:19 ] すみません、vidual studio2005のC++です
161 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 02:15:30 ] >>147 実装方法ですか。 マクロを使うというとこういう感じになるのでしょうか? ErrorLogger(char* filename, int linenumber, const char* errmsg) のようなロガークラスを用意して、 コンストラクタ内でエラー内容を記録させてしまうようにしておいて #define THROW(msg , exception_type) ErrorLogger log(__FILE__ , __LINE__ , msg);\ throw exeption_type\ というようなマクロを組めばよいのでしょうか? というか、初めてマクロを組んだのであってるかどうかも判りませんorz
162 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 02:55:52 ] >>161 自己レスながらマクロ修正してみた #define THROW(msg , exception_type) ErrorLogger log(__FILE__ , __LINE__ , msg); \ exception_type e;\ throw e\ これでだいじょうぶですかね?
163 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 02:58:56 ] >>161-162 ErrorLogger をクラスにする意味がわからない。関数でいいだろ。 例外オブジェクトにデフォルトコンストラクタしか使えないのは無駄な制限。 マクロ名は動作を表すように LOG_AND_THROW() とかにしたほうがよくない? あと、最後の \ が余計。
164 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 03:00:12 ] inline関数でいいじゃまいか。何故define・・・しかもTHROWはないなw
165 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 03:03:37 ] >>164 __FILE__, __LINE__ は inline 関数だとマズイだろ。
166 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 11:18:51 ] #define LOG_THROW(type) \ do { \ :LogAndThrow(#type, __FILE__, __LINE__); \ throw type(); \ } while(false) void LogAndThrow
167 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 11:19:13 ] 途中で送ってしまった・・・。
168 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 11:26:43 ] #ifdef NDEBUG #define LOG_THROW(type) \ do { \ LogAndThrow(#type); \ throw type(); \ } while(false) void LogAndThrow(const char* type_name) { ErrorLogger log; // ここでログをとる } #else #define LOG_THROW(type) \ do { \ LogAndThrow(#type, __FILE__, __LINE__); \ throw type(); \ } while(false) void LogAndThrow(const char* type_name, const char* file_name, int line) { ErrorLogger log; // ここでログをとる } #endif こんな感じ。 実際には関数の実装は .cpp 側に書くわけだけど。 THROW という名前は何かと使われている恐れがあるので止めた方がいい。 LOG_THROW って名前も、実際には何か接頭辞を付けた方がいいと思う。
169 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 11:30:39 ] しまった。ログとるだけにしたから LogAndThrow じゃなくて LogError だな。
170 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 11:31:38 ] もちつけ
171 名前:デフォルトの名無しさん [2008/03/02(日) 13:09:31 ] ifstreamで読込みをしているとき、改行を読み込んだことを知るにはどうすればよいですか?
172 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 13:10:28 ] 読み込んだ内容が改行を含むかどうかチェック。 1行ずつ読み込みたければ getline が使える。
173 名前:デフォルトの名無しさん [2008/03/02(日) 13:16:15 ] >>172 int a; ifs >> a; みたいにやってるんですが、 > 読み込んだ内容が改行を含むかどうかチェック。 はどうやればいいですか
174 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 13:18:17 ] ああ、そういうことか・・・。 それは無理じゃないかな。
175 名前:デフォルトの名無しさん [2008/03/02(日) 13:20:54 ] >>174 じゃあ、一行ずつ読みたいなら、getline()でやるしかないですか?
176 名前:デフォルトの名無しさん [2008/03/02(日) 13:25:32 ] 以下のようなとき、 子クラスのオブジェクトから、func(1)を実行すると、 func(const char* ch)を呼んでしまうのですが、 親クラスのfunc(int i)を呼ぶにはどうすればいいのでしょうか? /*****こんな感じ*****/ class Parent{ public: void func(int i); }; class Child : public Parent{ public: void func(const char* ch); }; /*******************/
177 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 13:29:35 ] >>175 そうなる。 getline した後 istringstream に渡してやるとか。
178 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 13:39:57 ] >>176 Child ch; ch.Parent::func(1);
179 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 13:47:37 ] >176 子クラス Child の func() によって親クラス Parent の func() が隠蔽されている。普通にオーバーロードしたいなら class Child : public Parent { public: using Parent::func; void func(const char* ch); }; とすることで Parent での func() も見えるようになる。
180 名前:176 mailto:sage [2008/03/02(日) 14:07:51 ] >>178 >>179 ありがとうございます。
181 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 14:27:55 ] namespace temp { class Test { private: std::ostringstream oss; public : ~Test() {std::cout << oss.str();} template <typename T> friend Test &operator <<(Test &, T t); }; } template<typename T> temp::Test &operator<< (temp::Test& test, T t) { test.oss << t; return test; } を、temp::Test() << 2; と使うと、「operator << が曖昧です」というコンパイルエラーになります。 名前空間を使わないとコンパイルできるのですが、何が問題なのでしょうか Win2k、VC2005です
182 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 14:32:37 ] << の実装部も temp 名前空間に入れないと。 temp::Test 内で宣言してる friend 関数は temp 名前空間内に入る。 だから、今は temp::operator<< と operator<< の2つがある状態。
183 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 14:37:08 ] >>182 なるほど、ありがとうございました!
184 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 14:39:32 ] あるいは friend のところを ::operator<< にするかだけど、 temp 名前空間内に入れた方がいいと思う。
185 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 14:50:17 ] コマンド等文字列処理で2重のループから抜けるときに goto文使うのって邪道かな? いつも使ってるんだが。
186 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 14:50:54 ] 2重ループから抜ける際に goto を使うのは常套手段
187 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 15:17:28 ] 俺、今まで一度も使ったことが無い。 使いたい衝動に駆られたことはある。
188 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 15:19:02 ] 小さい関数内なら結構goto使っちゃうなぁ
189 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 15:23:44 ] 常套手段ではあるけど、 2重ループから抜ける必要があること自体があまりないよね。
190 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 15:24:49 ] まあ関数は一目でざっと目通せる程度にするもんだしちゃんと考えて使うならぜんぜんいいと思う
191 名前:デフォルトの名無しさん [2008/03/02(日) 15:36:50 ] ポインタを解放した後、安全のためNULLを入れると書いてたんですが、 NULLを入れると何が安全なのでしょうか?
192 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 15:38:35 ] 解放されているかどうかを NULL チェックで確認できる。
193 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 15:39:18 ] 二重にdeleteすることが無くなる(delete(NULL)は安全なことが保障されている)
194 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 15:40:13 ] NULL なら間違って解放後にアクセスした際にエラーになってくれる環境が多い。 NULL じゃない場合は偶然アクセスできるかもしれないが、 メモリ領域を壊したり変な値を取得したりしてしまう。
195 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 15:41:42 ] 無限ループでポインタインクリメントでもしながら片っ端から表示してみれば良いわけない
196 名前:デフォルトの名無しさん [2008/03/02(日) 15:49:10 ] すみません keybd_eventみたいに プログラムからキーボードを押したことにするのは gccだと何か方法がありますか・・・?
197 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 16:12:32 ] >196 keybd_event は Windows API。gcc はいろんな環境向けがあるコンパイラ。 例えば Windows 上で gcc を使っているなら keybd_event になるわけだしやりたいことをもっと正確に書こう。
198 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 17:26:18 ] 初心者です。 デフォルトコンストラクタっていうのは、 1.引数なしで呼ばれるコンストラクタ 2.なにも記述してなくてもデフォルトで呼ばれるコンストラクタ のいったいどっちのことなのですか? 1と2の違いは、例えば、引数なしのコンストラクタを 自分で定義したときに、それをデフォルトコンストラクタと いうかどうかという違いになると思うのですが、、、 1と2の説明ともWEB上で見かけますが、 どちらがより正確なのでしょうか?
199 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 17:29:15 ] 引数無しで呼ばれるコンストラクタ。 自分で定義しようがデフォルトコンストラクタ。
200 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 17:34:41 ] >>198 引数なしで呼ばれるというよりは引数なしで呼ぶことが可能なと いったほうがいいかもな。デフォルト引数もあるから。 class Widget { public: Widget(int i = 0) {} }; //例えば Widget w; //このsyntaxがデフォルトコンストラクタを要求する。 //Widget::Widget(0)が呼ばれる。
201 名前:198 mailto:sage [2008/03/02(日) 17:35:37 ] >>199 ありがとうございます。 すっきりしました。
202 名前:198 mailto:sage [2008/03/02(日) 17:37:25 ] >>200 おっと行き違いになりました。 そうですか、 それもデフォルトコンストラクタなんですね。 ありがとうございました。
203 名前:196 [2008/03/02(日) 18:15:40 ] >197 すみませんでした OSはDebianでPDFかパワポのようなものを C言語で操作したいのです 具体的には下キーかEnterキーをC言語で押したことにして スライドを進めることを行いたいです
204 名前:191 mailto:sage [2008/03/02(日) 19:36:37 ] >>192 >>193 >>194 ありがとうございます。 具体的によく分かりました。
205 名前:デフォルトの名無しさん [2008/03/02(日) 21:56:29 ] c言語で聞きたいことが1からたくさんあるので、何方かmsnメッセで教えてくれませんか? kamisama6@hotmail.co.jp までお願いします!
206 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 22:02:14 ] >>205 C言語の個人講習をして欲しい訳だな?しかも無料で! そんな奇特な人は少ないが候補として C言語を覚えたてで自分のために他人に説明する人がいるが そんな人を探すくらいなら良書を買ったほうがいくぶんかマシ C言語をマスターしていながら教えてくれる人がいるとしたら リタイヤした人くらいだろうな
207 名前:デフォルトの名無しさん [2008/03/02(日) 22:08:50 ] string tmp; cin >> tmp; としたとき、改行だけが押されたことを知るにはどうすればいいですか?
208 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 22:16:47 ] >>207 フォーマット入力はデフォルトでは空白類記号は読み込まれない。
209 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 23:29:59 ] gcc をつかった 分割コンパイルの仕方がわからないのですが わかりやすく解説したページはないでしょうか?
210 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 23:33:01 ] gcc -c hoge1.c gcc -c hoge2.c gcc -c hoge3.c gcc -c hoge4.c gcc -o hoge hoge1.o hoge2.o hoge3.o hoge4.o
211 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 23:55:20 ] >>209 Makefileでググれば、良いと思う。
212 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 00:35:02 ] namespace Name { class Cls; }
213 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 00:48:48 ] 丸一日前のレスにレスか
214 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 00:52:06 ] Makefileとbjamとどっちがいい? やっぱ標準であるmakeは一通りやっとくべきかな?
215 名前:デフォルトの名無しさん [2008/03/03(月) 01:14:07 ] >>208 ありがとうございます。一応自分で書いてみましたが、まだうまく動きません。 noskipwsをした後、おかしくなります。 どうかよろしくお願いします。 std::string filename = "default_file.txt"; while (1) { std::string tmp; cout << "Input file name : (hit return to default: " << filename << ") "; cin >> std::noskipws >> tmp; // 下の(1)でY以外で答えたとき、ここで入力を受け付けてくれない。 if (tmp.empty()) { // リターンキーだけが押された場合に、ここのIF文に入る tmp = filename; } cin.clear(); cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); cin >> std::skipws; cout << "filename : " << tmp << " OK (Y|N) ? "; std::string ans; cin >> ans; // (1) if (ans == "Y") { filename = tmp; break; } }
216 名前:デフォルトの名無しさん [2008/03/03(月) 02:22:41 ] stdlib.hの中で_CRT_DOUBLE_DECと_LDSUPPORTを定義してないとき_CRT_DOUBLE、_CRT_FLOATといった構造体を用意してるようですが、 _CRT_DOUBLE_DECと_LDSUPPORTとこの2つに囲まれた構造体などは何のために用意してるんですか?
217 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 02:31:37 ] >>215 改行は読み込まないからgetlineがいい。 std::string filename = "default_file.txt"; while (1) { std::string tmp; std::cout << "Input file name : (hit return to default: " << filename << ") "; std::getline(std::cin, tmp); if (tmp.empty()) { tmp = filename; } std::cout << "filename : " << tmp << " OK (Y|N) ? "; std::string ans; std::getline(std::cin, ans); if (ans == "Y") { filename = tmp; break; } }
218 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 02:43:47 ] C++ってどういう業界の人がつかってるの? GUIでMFCやVCL、Qtさわるくらいはあるが、 ゲーム以外でフルスクラッチで書き上げる人たちって どういう人?
219 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 02:44:13 ] 趣味
220 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 03:24:20 ] やっぱそうか。 抽象化なんて考えてる暇あったら別の仕事が 飛んでくるもんね。
221 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 03:25:01 ] 最近C#なんか使う企業もねえ
222 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 03:50:36 ] つまりCωの時代がやってくると。
223 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 03:57:12 ] 時代はwebアプリか・・・
224 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 03:58:37 ] 業務ソフトなら実際C#とか.NETでもなんら問題なくなってきてるご時世だもの
225 名前:デフォルトの名無しさん [2008/03/03(月) 03:59:03 ] 俺は金融関係だけど、C++使ってるよ。 matlabを使うとこも多いけど。
226 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 04:00:20 ] 自動車関係企業のシステム部門ってC/C++使うのかなぁ
227 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 04:01:14 ] いかにも使いそうじゃないか
228 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 04:05:58 ] >>226 COBOLとか使うと思うんだ、経験則
229 名前:デフォルトの名無しさん [2008/03/03(月) 04:51:56 ] 昨日から色々質問させてもらっているものです。 色々分かってきたのですが、getlineとcinとの併用のときにどう書くべきかわかりません。 #include <iostream> using namespace std; int main() { int a; string s; cout << "int: "; cin >> a; // cin.ignore(numeric_limits<streamsize>::max(), '\n'); cout << "string: "; getline(cin, s); cout << "int: "; cin >> a; return 0; } 上記のソースでコメントアウトしている箇所がありますが、コメントアウトしたままだと、 真ん中のstringの入力が、1つめのintの入力の改行を拾ってしまうせいで、とばされてしまいます。 そこで質問なのですが、ここにコメントアウトされている行をいれるのは正しいですか?