- 1 名前:デフォルトの名無しさん [2009/07/19(日) 22:32:32 ]
- スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。
過去ログ スレを勃てるまでもないC/C++の質問はここで pc11.2ch.net/test/read.cgi/tech/1167476845/ スレを勃てるまでもないC/C++の質問はここで 2 pc11.2ch.net/test/read.cgi/tech/1178503366/ スレを勃てるまでもないC/C++の質問はここで 3 pc11.2ch.net/test/read.cgi/tech/1187521676/ スレを勃てるまでもないC/C++の質問はここで 4 pc11.2ch.net/test/read.cgi/tech/1221633708/ スレを勃てるまでもないC/C++の質問はここで 5 pc11.2ch.net/test/read.cgi/tech/1230516307/ スレを勃てるまでもないC/C++の質問はここで 6 pc11.2ch.net/test/read.cgi/tech/1231564903/ スレを勃てるまでもないC/C++の質問はここで 7 pc11.2ch.net/test/read.cgi/tech/1232983248/ スレを勃てるまでもないC/C++の質問はここで 8 pc12.2ch.net/test/read.cgi/tech/1235921779/ スレを勃てるまでもないC/C++の質問はここで 9 pc12.2ch.net/test/read.cgi/tech/1240022781/ スレを勃てるまでもないC/C++の質問はここで 10 pc12.2ch.net/test/read.cgi/tech/1242300936/ スレを勃てるまでもないC/C++の質問はここで 11 pc12.2ch.net/test/read.cgi/tech/1245059383/
- 185 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 02:22:50 ]
- >>184
コンストラクタ初期化子 class hoge{ private: class hoge_sub{ }; std::vector<hoge_sub> a; public: hoge() : a(20) {} };
- 186 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 02:23:01 ]
- vectorはそもそも配列じゃないですし
可変長なので固定長にもなりません。^^ vectorではなく、配列を使ってください。 hoge_sub a[20]; のようにするのです。
- 187 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 02:52:31 ]
- >>185,186
ありがとうございます class型の配列を扱いたいなと思った時に調べましたところ vectorを使う方法が紹介されてましたので、誤って認識していました
- 188 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 07:17:30 ]
- >>187
せめて入門書一冊分くらいは基礎を学んでおいた方がいいとおもうぞ。
- 189 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 22:45:01 ]
- >>188
入門書として適切なものを教えてください。 いや、手元には独習がありますが、ぜんぜん足りないような気がしているのです。
- 190 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 00:53:20 ]
- ハーバートシルト先生に教えてもらっておいてまだ足りないとな?
- 191 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 08:06:09 ]
- 独習C++なんて捨ててaccelerated C++とexceptional C++を読むんだ
- 192 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 10:16:59 ]
- 独習C++半分ぐらい読んで、EffectiveC++、More〜を全部読んで、独習デザインパターンも半分ぐらい読んで、ゲーム作る程度にはそれで十分だった
- 193 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 10:36:12 ]
- あまりの糞さに独習(ryは半分で飽きたということですね…わかります
- 194 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 11:42:47 ]
- マナたん(藁)→ロベールの次に読めるまともな本を教えて下さい
- 195 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 18:27:53 ]
- #include <iostream>
class hoge { private: int x; private: class in_hoge { public: in_hoge() {std::cout << x << std::endl;} }; in_hoge ihoge; public: hoge() : x(100), ihoge() {} }; int main(void) { hoge h; // output: 100 return 0; } コンパイルできないんだけど、どうやれば実装できるかな?
- 196 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 18:36:36 ]
- >>195
in_hogeのコンストラクタにxを渡せばいいんじゃね?
- 197 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 18:51:33 ]
- in_hogeの配列を確保する予定なので、コンストラクタに引数を渡せないのです・・・
- 198 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 18:57:14 ]
- 配列使うかわりにvector使えばいいんじゃね?
- 199 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 21:48:17 ]
- stringのreserve()ってメモリをここでいっぺんに確保して後の操作で動的確保をなるべくしないようにってことでいいの?
resize()との違いがようわからん
- 200 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 21:48:44 ]
- d.hatena.ne.jp/Isoparametric/20080117/1200575103
忍法ししちょびれ。
- 201 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 21:50:28 ]
- >>199
Yes, 高洲クリニック。 reserveは指定したサイズになるように「空き容量」を増やす。 resizeは指定したサイズになるように要素の数を増やすか減らす。 増えた要素は例えば0で埋められるし、減らされた要素は削除される。
- 202 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 18:41:23 ]
- VS C++ 2008 EE で コマンドラインから cl をつかってコンパイルする方法はないものですか?
パスをとおし、バッチファイルvcvers32.bat を実行しただけはうまくいかないようです。
- 203 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 18:45:50 ]
- >>202
それだけでできると思うけど、スタートメニューの中に Visual Studio 2008 コマンドプロンプトとかいうのがあるはず。そっちが確実。
- 204 名前:202 mailto:sage [2009/08/02(日) 18:49:23 ]
- 自己解決です。
msdn.microsoft.com/ja-jp/library/ms235639.aspx に詳細がありました。でも専用のcmd を使わないとダメなようです。cygwin プロンプトから実行というわけにはいかないようです。
- 205 名前:202 mailto:sage [2009/08/02(日) 18:50:11 ]
- >> 203
ありがとうございます。
- 206 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 19:01:09 ]
- Javaスレ、 C++スレ迷いましたが、上のほうの板は荒れ気味なのでここで質問させてください。宜しくお願いします。
g++ (GCC) 4.2.4 です java からC++ で作ったプログラムを使いたいのですが、どのような手順で作成すれば良いのでしょうか、 参考になるHP とかがあれば教えてもらえませんか。
- 207 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 19:01:53 ]
- >>204
Cygwin上で使いたいのなら、自分で環境変数INCLUDEとLIBとPATHを設定すればいい。 C++/CLIを使うならLIBPATHも。 内容はVisual Studioコマンドプロンプトの丸写しでいい。 あるいは、Visual Studioコマンドプロンプト上でCygwin.batを呼んで起動するという手もある。
- 208 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 19:02:37 ]
- >>206
まずはJNIでググるんだ。 よく分からなかったら、どこがどう分からないかを書き添えてもう1度聞きに来るといい。
- 209 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 19:16:43 ]
- >>208 さん、早速の回答ありがとうございます
やはりやり方といいますかjava で呼び出すことができるんですね、よく分かりました Windows でもLinux でもdll を作成してJava Native Interface 機能を用いて呼び出すことができるんですね、どうもありがとうございました。
- 210 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 23:29:35 ]
- 質問です。
C++でソケット使ったメール送信プログラム組んでます。 ループ内でコネクト・ライト・シャットダウン、クローズを 繰り返して複数メールの送信をしているのですが、 データ量が有る場合に送信されずにクローズしてしまいます。 送信バッファの指定・リンガ設定もしたのですが、変わりませんでした。 ソケット内での解決法やロジックでの解決法があれば 教えて下さい。。
- 211 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 23:32:05 ]
- ソースを晒さないとなんとも
- 212 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 00:54:59 ]
- >>210
パケットダンプ追えば、何がおきてるかわかるんじゃね?
- 213 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 01:47:48 ]
- 関数の終了コード(errnoとか)は見てる?
- 214 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 16:07:40 ]
- msdnのドキュメントなんだが、関数別に投げる可能性のある例外とか書いてあるページって無いものかな?
知りたかったらいちいちソース読まないといけないんだろうか・・・
- 215 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 16:18:48 ]
- ないよー
ちなみに何の関数について知りたい?
- 216 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 16:36:11 ]
- >>215
今回知りたいのはtr1のmt19937とuniform_intですけど、ほかのも結構頻繁に気になります
- 217 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 18:19:23 ]
- 最近の SDK には boost が含まれてるのか?
- 218 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 20:18:14 ]
- 0xだろ
- 219 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 21:48:05 ]
- >>217
0xの先取りTR1 randomのほかshared_ptr, regex, unordered_map/setなんかのライブラリが入っている。 VC++では2008に拡張パックまたはSP1で導入できる。 msdn.microsoft.com/ja-jp/library/bb982198.aspx
- 220 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 21:52:33 ]
- VC++のSTLのソースってすごい見づらい
- 221 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 17:33:29 ]
- 関数オブジェクトとかよくいうけど関数ポインタでいいじゃんっておもう
なにがすごいのこれ?
- 222 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 17:44:50 ]
- インライン展開できる
- 223 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 19:34:41 ]
- インスタンスが持てる
- 224 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 21:34:17 ]
- operator =ってコピコンみたいに継承元のコピー勝手に呼んでくれる、みたいな思いやりの精神は無いの?
- 225 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 21:47:11 ]
- コピコンにそんな機能あったのか
- 226 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 21:51:21 ]
- ないはず
勝手に呼ばれるのは継承元のデフォコンでは?
- 227 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 22:12:57 ]
- おまえら普通にコピコンとかデフォコンとかやめてください
- 228 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 22:13:45 ]
- Base::operator=を最初に呼ばないといかんのかめんどくさいな
- 229 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 22:15:28 ]
- じゃあシスコンで
- 230 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 22:18:21 ]
- デスコンとか超強そう
- 231 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 22:22:29 ]
- デスコン使うとか必死ですねwww
- 232 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 13:07:10 ]
- 例外って難しいです・・・
- 233 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 16:30:13 ]
- さじを投げてるだけじゃん。
誰かが拾って続きやるかもしれないけど、そいつもさじ投げるかもね。
- 234 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 22:01:09 ]
- Enterを押したら処理が進むようにするにはどのようにすれば良いのでしょうか?
char dammy; cin >> dammy; cout >> "Hit"; のようにしてもEnterだけだと入力を受け付けられず、 なにか文字をいれてEnterをおさないと進みません。 よろしくおねがいします。
- 235 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 22:47:39 ]
- int dummy;
dummy = cin.get(); cout << "Hit";
- 236 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 23:00:53 ]
- >>235
ありがとうございます。 ぶじかいけつできました。!!
- 237 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 01:24:15 ]
- 20個ものclassのインスタンスがあるのですが、
rand()%20 +1でせいせいした1~20までの数に合わせて それぞれのインスタンスにメソッドを適用したいです。 classのインスタンスを引数にわたしてメソッドを実行する関数を書いたので classの配列をつかってその関数にclassを渡したいです。Web検索で vectorを使うとかの説明は1つだけ出てきたのですが詳しくわからないのでよろしくおねがいします。 具体的にいうと class Hoge { public: Hoge() {} void fuga() {} }; void foo(Hoge h) { h.fuga(); } int main(void) { Hoge a; Hoge b; Hoge c; hit = rand()%3 + 1; class_array = なんらかのほうほうでa,b,cの配列 foo(class_array[hit]); return 0; } と言う風にかけないかと思っています。 よろしくおねがいします。
- 238 名前:デフォルトの名無しさん [2009/08/06(木) 01:29:08 ]
- Hoge a;
Hoge b; Hoge c; hit = rand()%3 + 1; じゃなくて Hoge class_array[3]; hit = rand()%3; じゃだめ? まあfooは参照かアドレスで渡すべきというのは置いておいて。
- 239 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 01:31:37 ]
- >>238
すみません、大事な部分を忘れていました。 a,b,cのコンストラクタにはいくつかそれぞれ別の引数を渡したいのですが、 それもふまえた上でよろしくおねがいします。(上のコードのclass Hogeのコンストラクタは引数をとる物に変更してください)
- 240 名前:デフォルトの名無しさん [2009/08/06(木) 01:36:19 ]
- こら。
Hoge *class_array[3]; にして、それぞれ new すれば良いでしょ。 >それもふまえた上でよろしくおねがいします。 >(上のコードのclass Hogeのコンストラクタは引数をとる物に変更してください) どんだけ上目線なの。
- 241 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 01:38:35 ]
- >>240
なるほど、なんとなくわかってきました。 ありがとう御座います。 >どんだけ上目線なの。 すいませんでした、いま自分の望んでいる動作を日本語にするのが難しくて 変な日本語になっていました。すいません。
- 242 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 01:40:17 ]
- 実際はインスタンスが100個以上あるので、できればもう書いて生成してしまったインスタンスを
けしてそれぞれnewし直す事なく修正したかったのですが、無理なようですね。 とりあえずがんばろうと思います。
- 243 名前:デフォルトの名無しさん [2009/08/06(木) 01:43:27 ]
- ポインタ知ってる?
- 244 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 01:49:11 ]
- どうやったらコンテナじゃないインスタンス100個とか糞みたいなコード書けるんだ
- 245 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 01:57:56 ]
- >>244
すいません、まだC++についてよくわかっていないのです.. おなじ種族に属する物で名前やジャンルが違うものを 100個の内50個はデフォルトでひつようで残りの50個は条件の違いによって 生成時に与えられるパラメータが違うという妙な仕様になっていて しかも100個どれが使用されるかはわからないという変なプログラムなんですよ。 まあ簡単にいうと動物園みたいなものです。
- 246 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 02:03:37 ]
- 配列にするのが嫌ならswitchでも使えばいいでしょ。
Hoge& selectHitTarget(Hoge& a, Hoge& b, Hoge& c) { switch(rand() % 3) { case 0: return a; case 1: return b; case 2: return c; } } int main(void) { Hoge a; Hoge b; Hoge c; Hoge& hit = selectHitTarget(a, b, c); foo(hit); return 0; }
- 247 名前:デフォルトの名無しさん [2009/08/06(木) 02:08:50 ]
- 246は何の解決にもなってないので却下として、
生成時に与えられるパラメータでインスタンスの生成方法が変わるものを 100個分書いた時点でなんかもう…。ま、書き直しを勧めます。 普通はパラメータは外部配列にしておくか、アルゴリズムで与えて、 オブジェクトが100個だろうが100000個だろうがループで回して配列に 入れながら new するでしょうね。 #スケーラビリティと言います。 この後はアドレス渡しではまって、継承ではまって仮想関数ではまって… となるのね。出題者は「わん」とか「にゃー」とか呼び分けたいだけなのに、 その手前で悩んでるパターンですかね。。。
- 248 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 02:25:46 ]
- static変数にパラメーターリストを入れて
デフォルトコンストラクタでそれを参照しながら初期化するとか でもなんか気持ち悪いな・・・
- 249 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 02:30:53 ]
- オレだったらコンストラクタをテンプレート関数にして個々のメソッドの中にconstメンバを基にSTATIC_ASSERT吐く様にする
- 250 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 02:32:32 ]
- モンスターのパラメータ
ランダムエンカウント時のモンスター決定 かと思った
- 251 名前:デフォルトの名無しさん [2009/08/06(木) 11:49:18 ]
- ttp://racanhack.sourceforge.jp/rhdoc/codepre.html
このページのコードを実行したいのですがGlibはどうやって導入すればいいんでしょうか WindowsXPでVisual Studio 2008 Expressを使ってます
- 252 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 13:37:37 ]
- >>251
GTK+の本家サイトでWin32版がダウンロードできるみたいだよ www.gtk.org/download.html
- 253 名前:253 mailto:sage [2009/08/06(木) 21:02:01 ]
- CもしくはC++でウェブ上の画像をURLを指定してhttpでダウンロードしたいのですが
できなくて困っています。 環境は下の通りです。 OS:windows XP 開発環境:Visual C++ 2008 ExpressEdition(win32プロジェクト) htmlファイルならwininetを使ってダウンロードできたのですが、 画像だとできません。htmlファイルと同様に画像もできないのでしょうか? また、wininet以外でいい方法があるなら教えてください。 サンプルプログラムは次に書きます。
- 254 名前:253 mailto:sage [2009/08/06(木) 21:06:00 ]
- HINTERNET hInet, hUrl;
char szBuf[128], *lpszSrc; DWORD dwRead; int nTotal = 0; HGLOBAL hMem; //目的のURLの入力 char szUrl[] = "hogehogehgoe.co.jp/hoge.jpg"; hInet = InternetOpen("hoge",INTERNET_OPEN_TYPE_PRECONFIG,NULL, NULL, 0); if (hInet == NULL) return -1; hUrl = InternetOpenUrl(hInet, szUrl, NULL, 0, 0, 0); if (hUrl == NULL) return -1; //lpszSrcに1バイトのみ確保 hMem = GlobalAlloc(GHND, 1); lpszSrc = (char *)GlobalLock(hMem); while (1) { InternetReadFile(hUrl, szBuf, (DWORD)sizeof(szBuf) - 1, &dwRead); szBuf[dwRead] = '\0'; //読み出す物がなくなったのでループ脱出 if (dwRead == 0)break; //必要バイト数の計算 nTotal += dwRead; //確保領域の大きさ変更 hMem = GlobalReAlloc(hMem, nTotal, GMEM_MOVEABLE); if (hMem == NULL) break; lpszSrc = (char *)GlobalLock(hMem); if (lpszSrc == NULL) break; strcat_s(lpszSrc, nTotal+1, szBuf); } 続く
- 255 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 21:07:14 ]
- strcat?
画像の途中に 0x00 があったら、そこで切れない?
- 256 名前:253 mailto:sage [2009/08/06(木) 21:07:18 ]
- //ファイル出力処理
std::ofstream fileout; fileout.open("D:/hoge.jpg"); // 出力ファイルをオープン if (!fileout){ MessageBox(NULL , TEXT("エラー!出力ファイルをオープンできません") ,TEXT("") , MB_OK); return -1; } fileout << lpszSrc <<'\n'; fileout.close(); //メモリの解放 GlobalUnlock(hMem); GlobalFree(hMem); //インターネットハンドルの解放 InternetCloseHandle(hUrl); InternetCloseHandle(hInet); 以上です。 すいませんがアドバイスください、お願いします
- 257 名前:253 mailto:sage [2009/08/06(木) 21:21:11 ]
- >>255
そうなんですか? じゃあ画像ファイルの場合どうしたらいいのでしょうか?
- 258 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 21:30:44 ]
- どこまで格納したか覚えておいて、memcpyで
memcpy(&lpszSrc[現在の位置], szBuf, dwRead); 現在の位置 += dwRead; みたいな感じで
- 259 名前:253 mailto:sage [2009/08/06(木) 21:51:36 ]
- >.258さん、ありがとうございます。
>>254のサンプルプログラムのwhileループの前で int nowI = 0; と宣言して whileループの最後のstrcat_sをコメントアウトして下の二行を追加しました。 memcpy(&lpszSrc[nowI], szBuf, dwRead); nowI += dwRead; でもできませんでした。なにか間違ってますでしょうか? ファイルは作成されてるんですけどデータがほとんど入っていないようで 画像ファイルとして開けません。 うう・・・ 別にwininetにこだっているわけではありません。 C/C++(VC+ EE)でweb上の画像をダウンロードする方法が他にあるのなら wininetじゃなくてもいいです。
- 260 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 22:20:19 ]
- おまえは、まず、バイナリデータをファイルに書き込んで、それを読み込むことが出来るのか?
話はそれからだ。
- 261 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 22:37:57 ]
- fprintfで書いてるんじゃなかろうな
- 262 名前:253 mailto:sage [2009/08/06(木) 22:51:10 ]
- >>おまえは、まず、バイナリデータをファイルに書き込んで、それを読み込むことが出来るのか?
うぅ、できません・・・ どうやら全然基礎が足りないみたいです。 もう一度勉強しなおします。 スレ汚してすいませんでした。
- 263 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 00:21:20 ]
- 今時ポインタがあるプログラミング言語なんてゴミ
らしいのですが いまどき一番需要のあるプログラミング言語は何でしょうか?
- 264 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 00:30:01 ]
- >>263
スレタイ読め ・・・っとただの釣りだったか。
- 265 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 02:05:25 ]
- char (*a)[10];
a = malloc(10 * n * sizeof(char*)); とすれば、n行10列のメモリ領域を確保できると思います。 しかし、実際にこの領域に格納したいデータは、 hoge0、hoge1、…、hoge100、… のように、添え字がついており、長さがどんどん長くなります。 極端な話、char (*a)[100]; のように、十分に大きい値に設定しておけば問題ないのですが、 何かメモリ領域をうまくとる方法はありませんか。
- 266 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 03:06:38 ]
- char (*a)[10];
a = malloc(n*sizeof(char [10])); sizeof(char *)で何をしようと思ったのか理解できないのだが もう少し詳しく書いてくれると良い情報が聞き出せるかもね
- 267 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 04:37:52 ]
- reallocしたいとか
vector使えとか そういう話じゃないかね
- 268 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 05:15:11 ]
- ジャグ配列が欲しいって話だろ
- 269 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 12:06:41 ]
- explicitをコピコンに使うと値渡し・返しができなくなるんだけどそういうもんなの?
- 270 名前:phenix mailto:sage [2009/08/07(金) 16:16:32 ]
- >>269
hoge a=b;で渡せないって意味ならそう。 hoge a(b);で渡せる。
- 271 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 18:47:28 ]
- フェニックスさんキタ!!
- 272 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 12:24:01 ]
- 関数の仮引数名に悩む場合
(どうすれば分かりやすくなるかな?とか) どう考えて付ける?
- 273 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 12:32:22 ]
- 変数名と同じ扱いでいいんじゃない?
- 274 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 12:36:32 ]
- >>273
俺は 同じ型の引数を持つ場合、 void foo(hoge_1, hoge_2) の様にしているんだが、 果たしてこれで分かりやすいと言えるのだろうか。 void foo(hoge_lhs, hoge_rhs) とどっちが分かりやすいだろう? と言うか分かりやすい引数って何だろう?
- 275 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 12:56:01 ]
- ユニークな名前付ける方がいいよ
file_copy(file1, file2) より file_copy( src, dst ) みたいに
- 276 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 13:01:10 ]
- 判り易くしようとすると変数名が長くなりがちだから、
そこらへんのバランスをどうするかが難しいな。
- 277 名前:272 mailto:sage [2009/08/08(土) 13:06:24 ]
- みんなありがとう。
指針とさせてください。
- 278 名前:デフォルトの名無しさん [2009/08/08(土) 16:23:05 ]
- windows xp でファイルの存在を確認したい
プログラムを書きたいのですができなくて困っています。 開発環境はVC++ 2008 Express Edition(win32 プロジェクト)でやっています。 下のプログラムのように、LPCWSTR型にファイルパスを直接代入すれば できるのですが、ファイルパスはstd::string型の変数で扱いたいです。 LPCWSTR lpszFilePath = TEXT("test.jpg"); if( PathFileExists( lpszFilePath ) ) { cout << "指定されたパスにファイルが存在" << endl; } else { cout << "ファイルはありません" << endl; } std::stringからLPCWSTRへの型変換の問題になると思うのですが これがわかりません。
- 279 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 16:34:08 ]
- LPCWSTR は Long Pointer to Const Wide String なので
C++標準に置き換えると const wchar_t *になるよね? なので、std::stringでは扱えません。 std::string を使う場合は LPCSTR を使いましょう。
- 280 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 16:50:05 ]
- >>278
AとWを相互に変換するライブラリがあるらしいよ。使ったことないけど… msdn.microsoft.com/ja-jp/library/87zae4a3(VS.80).aspx #include <atlstr.h> std::string s = "test.jpg"; LPCWSTR lpszFilePath = CA2W(s.c_str());
- 281 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 16:55:57 ]
- 俺も>>279だな
LPCWSTR → LPCSTR PathFileExists → PathFileExistsA
- 282 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 17:03:47 ]
- Standard Edition 以上なら CString ですんじゃうんだけどねぇ。
MFCは嫌い? あ、そう。
- 283 名前:278 mailto:sage [2009/08/08(土) 17:06:36 ]
- >>279-281
ありがとうございます、できました。 string hogeStr = "test.jpg"; LPCSTR lpszFilePath2 = hogeStr.c_str(); if( PathFileExistsA( lpszFilePath2 ) ) { cout << "指定されたパスにファイルが存在" << endl; } else { cout << "no file!!!!!!!!!!!!!!!!!" << endl; } ちなみに>>280さんのATL(#include <atlstr.h>)は Express editionでは使えないみたいです。 ttp://www.microsoft.com/japan/msdn/vstudio/2008/product/express/aboutexpress.aspx もう、やりたいことができたのでいいんですけど・・・ ともかく皆さんありがとうございました。
- 284 名前:278 mailto:sage [2009/08/08(土) 17:09:20 ]
- 更新しわすれた・・・
>>282 そうですね、Cstringも同じですね。 嫌いというか今はただお金をかけたくないんだけなんですけどね・・・
- 285 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 17:18:30 ]
- ナロー文字とワイド文字の混在は厄介だね。
char、wchar_t のかわりに TCHAR マクロを "文字列", L"文字列"のかわりに _T("文字列") マクロを使い、 さらに プロジェクト→プロパティ→構成プロパティ→全般→文字セットで 「設定なし」を選んでプロジェクト全体をshift-JIS標準に。 そうすればlocaleとかwstringとかwcoutとかostream_iterator< wchar_t >とか いちいち考えなくてすむ。
|

|