トップページ⇒tech
986コメント346KB

★初心者にVisual C++を教えるスレ★ Part38

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん2011/11/03(木) 00:54:48.61
Visual C++入門者・初心者からの質問を、
お兄ちゃんお姉ちゃん達が優しく、時には厳しく回答してくれるスレッドです。

■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう、特にWindowsForm、MFC、Win32アプリケーションの区別。
・できるだけ具体的に。

質問の仕方については次のページが大変参考になります。
http://www.hyuki.com/writing/techask.html

■回答するにあたって
・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。
 (MSDNのどの項目だとか、何のキーワードでGoogleするとか)
・ネタや煽りは軽く流しましょう。

【過去スレ】
Part37 http://hibari.2ch.net/test/read.cgi/tech/1299982561/
Part36 ttp://hibari.2ch.net/test/read.cgi/tech/1273939582/
Part35 ttp://pc12.2ch.net/test/read.cgi/tech/1256645713/
Part34 ttp://pc12.2ch.net/test/read.cgi/tech/1245382769/
Part33 ttp://pc12.2ch.net/test/read.cgi/tech/1235292263/
0951デフォルトの名無しさん2013/06/09(日) 02:05:10.00
>>950
丁寧に教えていただきありがとうございます
0952デフォルトの名無しさん2013/06/09(日) 02:59:48.98
01: #include <stdio.h>
02: #include <atlstr.h>
03: #include <vector>
04: 
05: int main(int argc, char* argv[])
06: {
07:   std::vector<CStringA> vstr;
08:   int bk_cnt, cnt = 0;
09: 
10:   bk_cnt = cnt;
11:   vstr.resize(cnt + 1);
12:   if( bk_cnt == vstr.size() ) return 0; // メモリ再割り当て失敗の場合は終了する
13: printf("bk_cnt=[%d] size=[%d]\n", bk_cnt, vstr.size());
14:   vstr[ cnt++ ].Format("あああ");
15: printf("vstr[%d]=[%s]\n", bk_cnt, vstr[bk_cnt]);
16: 
17:   bk_cnt = cnt;
18:   vstr.resize(cnt + 1);
19:   if( bk_cnt == vstr.size() ) return 0; // メモリ再割り当て失敗の場合は終了する
20: printf("bk_cnt=[%d] size=[%d]\n", bk_cnt, vstr.size());
21:   vstr[ cnt++ ].Format("いいい");
22: printf("vstr[%d]=[%s]\n", bk_cnt, vstr[bk_cnt]);
23: 
24:   return 0;
25: }
26: ----【実行結果】----
27: bk_cnt=[0] size=[1]
28: vstr[0]=[あああ]
29: bk_cnt=[1] size=[2]
30: vstr[1]=[いいい]
0953デフォルトの名無しさん2013/06/09(日) 03:02:33.22
見にくいソースで申し訳ないのですが、
>>952について教えて欲しいです。
VC++ 2008 の win32 console(マルチバイト文字セットを使用する)環境で実行しました。

std::vector を使い CStringA型の配列のメモリを動的に再割り当てするプログラムです。
vector::resize の成功か失敗かを知りたいのですが、この関数はvoid型なので、
戻り値がありません。

10行目、12行目にて、メモリの再割り当てが成功か失敗か判断しているつもりですが、
「成功(要素数が増加している)、失敗(要素数に変化なし)」という判断方法で、
合っていますでしょうか。

ご存じの方がいらっしゃれば、よろしくお願いします。
0954デフォルトの名無しさん2013/06/09(日) 03:07:29.31
例外知らないとかお前なにを勉強してたんだ
0955デフォルトの名無しさん2013/06/09(日) 03:18:48.52
>>954
すみません。あまり慣れていない手段(例外)は使いたくなかったので避けていました
>>952では失敗を検知するのは例外(try , throw , catch)を使う方法しかないのでしょうか
0956デフォルトの名無しさん2013/06/09(日) 03:24:07.71
ない
0957デフォルトの名無しさん2013/06/09(日) 07:43:53.94
>>956
ありがとうございます
了解しました
0958デフォルトの名無しさん2013/08/06(火) NY:AN:NY.AN
教えてください
0959片山博文MZパンク ◆0lBZNi.Q7evd 2013/08/06(火) NY:AN:NY.AN
>>958
インストールハ、オワッタカ?
0960デフォルトの名無しさん2013/08/06(火) NY:AN:NY.AN
お断りします
0961デフォルトの名無しさん2013/08/07(水) NY:AN:NY.AN
ひどいわ
0962デフォルトの名無しさん2013/08/08(木) NY:AN:NY.AN
Visual c++でCを使う方法を教えて下さい。基本情報受けたいです。
0963デフォルトの名無しさん2013/08/08(木) NY:AN:NY.AN
ファイル拡張子をCにしたら?
0964デフォルトの名無しさん2013/08/08(木) NY:AN:NY.AN
ありがとうございます、普通にフォルダで見るとCのファイルに変わってるんですが、VisualC++ を開いた時、左側のソリューションのところでは画像がC++のファイルのままです。これは変わってるんですか?
0965デフォルトの名無しさん2013/08/08(木) NY:AN:NY.AN
よく分からんが変わってるんじゃない?
CもC++も同じだから気にするな
0966デフォルトの名無しさん2013/08/08(木) NY:AN:NY.AN
こんな感じ?
http://tinqwill.blog59.fc2.com/blog-entry-68.html
0967デフォルトの名無しさん2013/08/08(木) NY:AN:NY.AN
ファイルの拡張子を表示する設定にしてないとか
0968デフォルトの名無しさん2013/08/08(木) NY:AN:NY.AN
>基本情報受けたい

って意味がよく分からん
0969デフォルトの名無しさん2013/08/08(木) NY:AN:NY.AN
試験勉強に使いたいって意味だろ気にすんな
0970デフォルトの名無しさん2013/08/09(金) NY:AN:NY.AN
VC使ってのに未だにfreadとか平気使う
私もいますよ。
0971デフォルトの名無しさん2013/08/09(金) NY:AN:NY.AN
つうか何でもぶちんで動けばいいやって考えはやばいですか
0972デフォルトの名無しさん2013/08/09(金) NY:AN:NY.AN
仕事じゃなきゃそれがいいよ
書かない、動かないのほうがやばい
0973デフォルトの名無しさん2013/08/10(土) NY:AN:NY.AN
Cのアパコンパチなんでコンパイル、リンクが出来て
テストパスすればいんでしょうけど、
やぱC++のfstreamとかiosとかでやりたいってのはあるよねぇ。
0974デフォルトの名無しさん2013/08/11(日) NY:AN:NY.AN
2ヶ月空いてるのに食いつき方きめえな
特におまえは>>959シコシココード書いてろ
0975デフォルトの名無しさん2013/08/11(日) NY:AN:NY.AN
こいつこそ、5 日も空けてから入れるツッコミじゃないと思うが。
0976デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
誰が誰だか
0977デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
まあまあ
0978デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
野良関数はどこのファイルに書いていいのですか?
mainだけ?
ほかのクラスの.cppに適当に放り込んでもいいのですか?
0979デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
どこでもいいけど
後で困らないように分けといたら?
0980デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
ありがとうございます
コードは書いてあっても
ファイル分けまで説明してない本が多くて
基礎を読んだ後いざ作ろうとするとよくわからなくなってしまいました

>ほかのクラスの.cppに適当に放り込んでもいいのですか?
これはクラスのメンバ関数とは別にそのまま呼び出せるのでしょうか
0981デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
そのまま呼び出せなきゃ困るだろ
0982デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
はい
わかりました
0983デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
そこからか。
プロトタイプ宣言をヘッダにまとめて、使いたいとこでinclude
そのファイルでしか使わないなら、上の方にプロトタイプ宣言書けばいい。
関数定義を上に持っていく、というものぐさはあとで困るかもw
0984デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
俺は野良関数でも野放しにしないで、野良関数用のclass作っておくな
0985デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
ためしにでたらめなものでやってみましたが
そのプロトタイプ宣言は
ヘッダにも書けるし
mainにも書けるのですね
せっかく別ファイルに書いたのにmainに書いていては意味無いですが
0986デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
あ
レス数が950を超えています。1000を超えると書き込みができなくなります。