[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 11/14 14:36 / Filesize : 194 KB / Number-of Response : 757
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【初心者歓迎】C/C++室 Ver.39【環境依存OK】



1 名前:デフォルトの名無しさん [2007/06/25(月) 12:01:46 ]
エスケープシーケンスやWin32APIなどの環境依存な物でもOK。
ただしその場合、質問者は必ず、環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。
【前スレ】
【初心者歓迎】C/C++室 Ver.38【環境依存OK】
pc11.2ch.net/test/read.cgi/tech/1180877635/
【アップローダー】(質問が長い時はココ使うと便利)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm

449 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 21:32:50 ]
>>445
有難うございます、あす、これとmallocの知識を引っさげて学校で自慢してきます

450 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 21:33:27 ]
>>449
他にこのスレ見てるやつもいるかもなw

451 名前:445 mailto:sage [2007/07/04(水) 21:34:47 ]
>>447
なるほど。書いてもらったやつで調べてみたら
できそうですね。ありがとうございます。

あと少し教えてください。
「_mbclen」のアンダーバーは何を意味しているんですか?

それとアンマネージドというのは.NETの機能を
使わなければいいんですよね?
MFC、ATL、SDK、WINDOWS APIとかその辺の区別が全く理解できなくて・・・。


452 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 21:35:45 ]
>>448
すいません。「全角が出ません」の間違いです。

453 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 21:44:47 ]
>>451
処理系オリジナルのものと言う証。
下線で始まる名前は、処理系のために予約されている。

454 名前:デフォルトの名無しさん [2007/07/04(水) 21:59:18 ]
C++初心者です。型変換のことで教えてください。
main(){ int iv; iv=int(3.14); }
この「int()」は何ですか?キャスト演算子ですよね?それとも値生成演算子?
また、
class T { int miv; public: T(int iv=0):miv(iv){} };
main(){ T oa; oa=T(2); }
このT(2)は、変換コンストラクタの呼び出しですよね?キャストとは呼ばない?
さらに、main()を次のように書き換えると、
main(){ T oa; oa=static_cast<T>(2); }
このstatic_cast<T>(2)はキャストだけど、実はT(2)と同じですよね。
じゃあ、T(2)もやはりキャストなのでしょうか?コンストラクタの呼び出しとは言わない?
ネットやいろんな本を見ても、このあたり、はっきり書いてないのです。

455 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 22:00:47 ]
>>453
わかりました。ありがとうございました。

456 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 22:06:07 ]
>>454
>この「int()」は何ですか?キャスト演算子ですよね?それとも値生成演算子?
int のコンストラクタの呼び出しによるテンポラリオブジェクトの作成。

>このT(2)は、変換コンストラクタの呼び出しですよね?キャストとは呼ばない?
T のコンストラクタの呼び出しによるテンポラリオブジェクトの作成。

>このstatic_cast<T>(2)はキャストだけど、実はT(2)と同じですよね。
多分同じ。

457 名前:454 mailto:sage [2007/07/04(水) 22:20:46 ]
>>456さん、早速ありがとうございます。
intのようなC言語からある型の場合も、コンストラクタ、オブジェクトという概念で
考えるのですかぁ。C++では、intなどの型もクラスのような感じ?

C++本やネットでは、int()は(C風の)キャストだという記述が多いですが、
「コンストラクタ呼び出しによるテンポラリオブジェクトの作成」は、
別な言い方をすれば「キャスト」と同じこと、という理解で良いのでしょうか?
static_cast<T>(2)はT(2)と規格上同じだし、(T)2、と書くことも出来るから考えると。





458 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 22:23:22 ]
キャストは引数を複数取れないから基本的には別のもの。
引数が 1 つの場合は同じようになるだけで。

459 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 22:27:09 ]
規格票の 5.2.3 明示的型変換(関数的記法) によれば、
この記法とキャストは同等だと書いてありますね。

460 名前:454 mailto:sage [2007/07/04(水) 22:40:00 ]
型がクラスの場合は、
引数1つだとキャストと同じ表記だけどキャストとは別もののコンストラクタ呼び出し、
というのは、納得です。

じゃあ、例えばintの場合、Cでは「 (int)3.14」はキャストですよね?
C++では、「(int)3.14」はコンストラクタ呼び出しであって、キャストではないということ?
それとも、「(int)3.14」はキャストだけど「int(3.14)」はコンストラクタ呼び出し?

と、ここで>>459さんもコメントどうもです。
とすると、意味合いとしてはキャストと、このコンストラクタ呼び出しは同じってこと?
それとも、記法としては同じであって、でも意味合いとしては別もの、ということ?


461 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 22:46:33 ]
同じものの違う表記法というだけみたいですね。

462 名前:デフォルトの名無しさん [2007/07/04(水) 22:47:33 ]
>>408
char *s = "hoge";
は、書き換えたりしない(書き換えられないとは違う)。
同じ文字列リテラル(ダブルクォーテーションで括った文字列)は、
コンパイラに特別指定しない限り同じ領域を指すポインタである。
深夜までデバッグしたくなければ書き換えるのはやめれ。

従って、("hoge"[2] == 'g')
は、真になる。参照する方はやりたい放題。

関数内での
char s[] = "hoge";
はありえないと思うのだが、検証した?

char s[]というのはポインタではなく、要素数を省略した配列なので、
まず、要素数が決まる `= { ... }' という構文が必要。
そして、この構文は静的変数(グローバル変数か、スタティック変数)にだけ許される。

例えば、static char s[] = { 'h', 'o', 'g', 'e', '\0' };
これなら別の値に自由に変更可。

例外として、引数がある
void hogege(char hoge[]);
これは
void hogege(char *hoge);
と全く同義なので自由に書き換えられる。
もちろん、呼び出し元の関数と調和をはかるように。


463 名前:454 mailto:sage [2007/07/04(水) 22:51:48 ]
昨日、本屋で「C++の設計と進化」を立ち読みしたです。
索引で見つけた「コンストラクタの表記」を引いてみると、
クラス型名(式)の表記によってコンストラクタを式中でも使えるようになった、
というようなことが書いてあり、さらには、この表記は、
キャストの表記と同じだ、とも書いてありました。
でも、コンストラクタの表記とキャストは同一だという説明はなく、
このあたりは、はっきりとは書かれていなかったです。

C++の本は、新しい4つのキャスト演算子については必ず説明がありますが、
オブジェクトの初期化とコピーコンストラクター以外の
コンストラクタの呼び出し(とテンポラリオブジェクトの作成)については、
ほとんど説明がないですねぇ。。



464 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 22:57:01 ]
正確な情報を知りたければ規格票を見るのが一番ですよ。
www.jisc.go.jp/app/JPS/JPSO0020.html
C++ の規格番号は X3014 です。

465 名前:454 mailto:sage [2007/07/04(水) 23:00:56 ]
>>464
はい、逝ってきます・・・

466 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 23:17:00 ]
>>460
459ではあれだけで終わっているが、
実際のところ、5.2.3には続きがあって、括弧の中の式の並びが複数ある場合、
コンストラクタを呼び出して一時オブジェクトを作ると規定されている。

歴史的には、コンストラクタを呼んでクラスの一時オブジェクトを作る構文として
導入されたのが最初で、後にそれを一般化して全ての型に対して使えるようになった。
(C++の設計と進化に書いてあるとおり)
その際、組込型では型変換演算子と同じ効力を持たせたという次第。

また、1つしか引数を取らないコンストラクタは、そのクラス型への型変換を提供する。
だから454でのstatic_cast<T>(2)は結局コンストラクタ呼出として機能する。
(あと型変換演算子の話もしたいが省略)

C++は、型変換を即ち新しいオブジェクトが作り出されることと捉えているように思われる。
すると、コンストラクタ呼出と型変換の境界が非常に曖昧になっているも納得がいく。


467 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 23:24:01 ]
(int*)p はできるけど int*(p) はできないってところとか、
本当に細かい文法的な違いはあるね。



468 名前:454 mailto:sage [2007/07/04(水) 23:34:42 ]
>>466
ちょっと判ったような気になりました。ありがとう。
ついでにもう一つ。これから変換関数、変換演算子を勉強しようとしているところですが、
この2つ、同じものですよね?呼び方が違うだけで。


>>467
そーですね。単一名称(単純名称)でないとだめ、という説明はよく見ます。
typedefすれば大丈夫、ともよく書いてある。

469 名前:454 mailto:sage [2007/07/04(水) 23:49:26 ]
いま、JIS3014を検索してみました。
「変換関数」はたくさん出てきます。
「変換演算子」というのは該当無しで、
「型変換演算子」は、dynamic_cast, static_cast, reinterpret_cast, const_cast
のことを指すのですね。
ネットでググると、変換関数の意味で「変換演算子」を使っているページが
たくさんヒットするんですが、これらはみんな間違ってるのかな。

というか、JIS3014、おもしろい。絶対的な信頼があるから、
間違いを疑う必要もないしね。

470 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 00:18:30 ]
間違いはないけど、コンパイラが対応してないこともw
export とかほとんど対応してないし。

471 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 00:35:03 ]
>>462
初心者騙して楽しいか?

> 同じ文字列リテラル(ダブルクォーテーションで括った文字列)は、
> コンパイラに特別指定しない限り同じ領域を指すポインタである。

そんなことは決まってない。

> そして、この構文は静的変数(グローバル変数か、スタティック変数)にだけ許される。

自動変数でも配列要素数の省略は使える。

472 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 04:58:00 ]
質問です。
Microsoft Visual C++ 2005 Express Editionにおいて、
C++のアプリケーションを作っています。

コンパイル後の.exeファイルのプロパティで
バージョン情報や会社名などが表示されるタブが出ません。

ソリューションエクスプローラ中にはAssemblyInfo.cppという、
AssemblyTitleAttributeなどが配置されたファイルが自動生成されています。
しかし、反映されません。(検索などではC#で作成され、csの場合のみ反映されるらしい)

対処法か代替案を持っていらっしゃる方はおりませんか?

473 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 05:13:07 ]
>>472
こっちで聞いた方がいいと思う

Visual Studio 2005スレ Part21
pc11.2ch.net/test/read.cgi/tech/1180692040/

474 名前:デフォルトの名無しさん [2007/07/05(木) 09:03:52 ]
実行環境はWindows環境、開発環境はVS6.0です。
メールを送りたいのですが一般的な既存ライブラリは存在しているのでしょうか?
イメージしているのはWinsockに依存したライブラリですが
普通はそのままSMTPを喋るものなのでしょうか?

受信は必要なく、OB25Pも問題ありません。

475 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 09:38:14 ]

Windowsで一般的といえばMAPIだろうな

俺は使いたくないけどw



476 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 09:42:20 ]
basp21.dll

477 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 10:46:02 ]
>>476
そういえばそんなのもあったね。



478 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 11:05:27 ]

ttp://www.hi-ho.ne.jp/babaq/basp21.html
2007年6月29日更新

タイムリーすぎてワロス
まさか自演じゃないだろうな


479 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 11:31:25 ]
Windowsで簡単に見た目もいけてるGUIを作るにはどんな方法があるでしょうか?

ちなみに過去にチャレンジしたこと

・C++/CLR
コントロールは豊富だが、OfficeとかVSにあるようなフローティングメニューが見つからないので中断
日本語の資料が少なくて困る
既存のリソース(DLLなど)と組み合わせるときに
DLLのほうの仕様を変えないとうまく動かないor非常にめんどくさいの2択になる
あと変な拡張構文がキモい

・MFC
デフォルトのコントロール数が貧弱だが、資料も多いし、
Win32APIをラッピングしてある程度のものが多くわかりやすい。
VS2005で作成するとManifestでうんぬんとうざいのでスタティックリンクできないプロジェクトだとだるい。

・C++Builder
GUIのデザインをするには最強だと思うが、本体が生きてるのか死んでるのかよくわからんのと
重い、謎のバグがいつまでも取れない、というのがネック。
未だに6を使ってる人が多い。
VCと一緒に入れるとデバッガが正常に動かない可能性がある?

・WTL
何がいいのかさっぱり


480 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 11:40:11 ]
CEGUI

481 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 11:56:50 ]
>>479
SWINGとかAWT継承すれば?
C++じゃなくなるけど

482 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 12:21:14 ]
SwingとかAWTをJNI通してC++から使うっていう意味?


483 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 12:22:06 ]
SQING や AWT がイケてるとは思えないけどw


484 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 12:36:44 ]
ロジック部分を C++ で書いて
ユーザインターフェイスは C# で書く。
C# からアンマネージドなDLL呼び出せるし。
だめ?

485 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 12:43:30 ]
FrameworkもJREも無しですませたい

486 名前:デフォルトの名無しさん [2007/07/05(木) 12:52:35 ]
すみません
stringのfindは、またはの検索できませんか

たとえば"あい"または"大塚"または"愛"

とかです

487 名前:デフォルトの名無しさん [2007/07/05(木) 12:53:34 ]
str.find("あい"|"大塚"|"愛")

でいいんでしょうか



488 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 12:56:49 ]
なんで試さないの?

489 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 12:58:48 ]
>>486-487
str.find("あい") != string::npos ||
str.find("大塚") != string::npos ||
str.find("愛") != string::npos

正規表現ライブラリを使ったほうがいいかもね。


490 名前:デフォルトの名無しさん [2007/07/05(木) 13:01:18 ]
>>499
ヒットする、またはヒットする、ってやるんですね
サンクス わかりました

491 名前:デフォルトの名無しさん [2007/07/05(木) 13:02:37 ]
でも、番号がわからないような気が・・正規表現ライブラリを調べてみます!

492 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 13:07:19 ]
場所が欲しかったら代入してやればいい
if ((pos = str.find("あい")) != string::npos ||
(pos = str.find("大塚")) != string::npos ||
(pos = str.find("愛")) != string::npos) {
// みつかった
} else {
// みつからへん
}



493 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 14:22:14 ]
ライセンスキーを入力->立ち上がる
これをやりたんです。

・キーの発行は手作業で。
・アプリ側ですること、ライセンスキーを認証するdllを作成。

こんなこと想像してます。解説しているページや
簡単に実現できるツールなどありませんか。

494 名前:472 mailto:sage [2007/07/05(木) 15:53:44 ]
>>473
誘導感謝。そっちへ行ってみます。

495 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 23:58:22 ]
>> 同じ文字列リテラル(ダブルクォーテーションで括った文字列)は、
>> コンパイラに特別指定しない限り同じ領域を指すポインタである。
>
>そんなことは決まってない。

そうでない処理系を挙げてくれ。

>
>> そして、この構文は静的変数(グローバル変数か、スタティック変数)にだけ許される。
>
>自動変数でも配列要素数の省略は使える。

どんな例か試しに書いてくれ。

496 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 00:04:06 ]
VCとか。

C89(ANSI-C)以前の人は、自動変数で
int hoge[]={1,2,3};式の初期化が出来ないとか言い張ることあるよね。

497 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 00:08:04 ]
>>495
Visual C++では、コンパイラオプション/GFを指定しないと
同一文字列リテラルが同じ領域を共有するようにならない。
(なお/O1や/O2などの最適化オプションを指定すると暗黙の内に/GFも指定されたことになる)

ローカル変数での配列でもchar s[] = "hoge";や
char s[] = {'h', 'o', 'g', 'e', '\0'};のように書くことは可能。
このように静的変数や大域変数と同じ構文。
少なくともANSI/ISO Cではできることになっているし、
PC用のコンパイラなら今時できないものを見つけるほうが難しい。





498 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 00:12:14 ]
>>495
===== 同じ文字列リテラルが違う領域を指す例 =====
gcc -c b.c
gcc a.c b.o
/*----- a.c -----*/
#include<stdio.h>
char *p_hello(void);
int main(void){
printf("%s %s\n", "hello", p_hello());
printf("%p %p\n", "hello", p_hello());
return 0;
}
/*----- b.c -----*/
char *p_hello(void){
return "hello";
}
----- 実行結果 -----
hello hello
00403000 00403020


===== 自動変数で配列要素数の省略 =====
#include<stdio.h>
int main(void){
int i, data[]={0,1,2,3,4,5,6,7,8,9};
for(i=0;i<sizeof(data)/sizeof(data[0]);i++)
printf("%d\n", data[i]);
return 0;
}

499 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 00:22:06 ]
>>495
わざわざ無知を晒しに出てこなくてもよかったのにね。

500 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 00:28:25 ]
まあ聞くは一時の恥、聞かぬは一生の恥と言うし、
495はいい勉強になったということでいいじゃないか。

501 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 00:38:17 ]
>>493
至極簡単だと思うけど…

502 名前:474 mailto:sage [2007/07/06(金) 01:01:18 ]
皆様回答ありがとうございます。
BASP21はタイムリーですね。自演ではないです。

調べてみたところSMTP-AUTHに対応してなさそうな感じでしたので
MAPIをもう少し調べてみようと思います。
ありがとうございました。

503 名前:493 mailto:sage [2007/07/06(金) 02:01:09 ]
>>501
1.大量のライセンスキーのデータベースが入っていて、マッチング。
2.それとも、秘密の値を一つだけ持っていて、
  数学的になにか計算して、(ハッシュなど)マッチング。

一番目ってキーの数が多かったら、大変ですよね。ぬー。
ということは、数学のなにかを使って、やるんでしょうか?

たとえば、ウィンドウズだと、どんな感じでしょうか。

504 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:25:49 ]
ライセンスキーをソートした状態で持っておけば、2分検索が使えるよ。

505 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:45:47 ]
だいたいはアルゴリズムで、
ブラックリストデータベースも利用、かなー。
MSのは、公開鍵認証とハッシュがどーの、という話があったけどねー

506 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 06:36:31 ]
オンライン認証じゃないのか

507 名前:493 mailto:sage [2007/07/06(金) 10:40:35 ]
>>504-505
たくさんの大量のライセンスキーを
用意して、ただマッチングがわかりやすいです。
オンライン認証もいいですね。

>MSのは、公開鍵認証とハッシュがどーの、という話があったけどねー
ハッシュ、公開鍵、秘密鍵、独自の計算方法、を使うんですか。
難しそうなので、うまいアルゴリズムは、徐々に考えていこうと思います。

興味があったので、勉強のために質問させていただきました。
ありがとうございました。



508 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 11:17:24 ]
MSの場合はデータベースを使ってるに決まってるだろ。

509 名前:495 [2007/07/06(金) 21:41:30 ]
検証してANSI-Cでは動的配列等の初期化ができると分かって来て見たら非難誹謗の嵐だ。
わざわざお礼を言おうと思ったが、そんな非礼な人間に感謝の気持ちなどなくなった。

そうだよ。俺はANSI-C以前からC使いだった。
C++を黎明期から覚えて使い始めてからは、string系クラスが活躍してくれて
外的・静的配列以外に初期化子を使う必要もなかったからな。

君らが古いコードをメンテする憂き目に遭うことを祈ってるよ。


510 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 21:46:42 ]
どんな理由があろうが捨て台詞は格好悪いから辞めた方がいいって


511 名前:495 mailto:sage [2007/07/06(金) 21:50:05 ]
ああ、ちなみに俺は『夜中までデバッグしたくなかったら』という前提で
文字列リテラルは同じポインタを参照するって意味で書いたんだぜ。

その辺は文脈嫁。

それから、C/C++の教本を読んでる暇があったら職を探せよ(w


512 名前:495 [2007/07/06(金) 21:53:19 ]
漢字もろくに書けないゆとりに説教されるとはな。
辞める→止める、やめる

適当にアラスカ。

513 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 21:56:33 ]
なんだこのオッサン
年甲斐もなく2chで火病かよ

一生やってろ

514 名前:デフォルトの名無しさん [2007/07/06(金) 21:58:22 ]
俺をあげつらったやつら、特に学生よ、昔のコードには

int a[100] = { 0 };

なんて構文はなかったんだぜ。
就職先のコンパイラが古かったら、解けないバグに悩まされろよ。

515 名前:495 [2007/07/06(金) 21:59:34 ]
>>513
そのつもりだぜ?

516 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:00:17 ]
日々のストレスで頭がおかしくなったんだよ。
そっとしといてやれ。

517 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:01:08 ]
>>514
古いコンパイラでその構文が通らなければエラーになるだけなので
解けないバグも糞も無いんだが……



518 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:01:08 ]
そんなに悔しかったのか

519 名前:495 [2007/07/06(金) 22:03:08 ]
そっとしてくれないのはまさに君じゃあないか >>516
火病だろうがなんだろうが、アラシがいると皆楽しそうだなあ。ふふっ

期待してるんじゃないのか?

520 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:03:32 ]
こりゃC99の話とかしたらおもしろそうだな

521 名前:495 [2007/07/06(金) 22:07:05 ]
>>518
そうだな。例えば君が車の免許を取ったとする。
10年後に、君の知らない新しい規則で捕まったとしよう。
それは悔しくないか?

100歩譲って仕方ないとしても、
見ず知らずの人間から「そんなことも知らんバカがいる」
と言われて悔しくない奴がいるかい?

522 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:08:15 ]
技術者なら仕様の更新くらい把握しとけよ

523 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:10:18 ]
この業界の人間ならまず己を恥じるけどな

アンテナ張らなくなったら終わりだぞ

524 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:11:59 ]
昔から半導体のプロセス技術で仕事をしていて、
年々プロセスが細くなってきて、昔は気にもしなかったような
トンネル効果やらリーク電流やらに悩まされるような感じか

525 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:12:53 ]
>>521
つーか技術者なら、まず自分の無知を恥じろよ。
で、どういうカタチであれ知識を教えてもらったことを有難いと思えよ。

ま、アンタの場合、恥じるべきは自分の無知よりむしろ
年甲斐も無いDQNさだろうな。
もっぺん自分のレス読みかえせよ。

>>495は人にものを尋ねる態度か?
簡単に自分に確かめられることなのに、自分で確かめようともせずに
まるでケンカ越しで偉そうに聞いてたよな。
一体何様のつもりなんだか。

526 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:16:09 ]
>>521
悔しいのはわかるが、それをばねに勉強するなど
その気持ちをほかの方向へ向ける手もあるだろうに。

527 名前:495 [2007/07/06(金) 22:17:10 ]
>>520
complex型とか色々増えたんだろ。
確か、enumも面倒くさい仕様になったんだよな。
全く知らないわけじゃないが、不要な機能も多そうだ。
C言語仕様で遊んでる奴らは、もっと基本に返って欲しいぜ。




528 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:19:12 ]
自分が最近の仕様に疎いという自己認識があるんなら
最初から>>462みたいに偉そうに書かなきゃいいのに

初心者相手と思ってやったんならなおタチ悪いぞ

529 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:19:51 ]
enum で何か大きく変わったっけ?
最後にコンマつけても良くなった程度じゃない?

530 名前:495 [2007/07/06(金) 22:25:49 ]
ほら、説教オタが集まってきた。
これだから嵐はやめられん。
>>523
お前は常にアンテナを張っているといえるのか?

>>524
それは『道具を作る』側の悩みだろ。現場だから悩みは直ぐ分かるぜ。
俺は言語を作ってるわけじゃない『道具を使ってる』側だから、勝手に変えられるのもこまるんだぜ。

>>525
そうさ、お礼をするつもりだったのさ。
その後は前に書いたとおりだ。二度も言わせるな。

人にモノを尋ねる態度じゃないと思ったら
答えなきゃいいじゃないか。それか無視すればいいんじゃね?
君の知識で答えられるとは思えないがな。実は今日初めて知った仕様じゃないのかい(w

>>526
そのつもり。



531 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:26:54 ]
無視すればいいんじゃね?
どうみても過剰反応の荒しなんだが。

532 名前:495 [2007/07/06(金) 22:28:11 ]
>>529
ほーら。こう言う人もいる。

分かる奴はenum談義でもしてやれよ。ほら。さあさあ。

533 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:30:16 ]
いまどきノーヘルで捕まって悔しがる馬鹿っているのか?
そのレベルだろ

534 名前:495 [2007/07/06(金) 22:31:35 ]
>>531
過剰反応じゃなきゃ嵐とは言えネー。
そして君は無視してなーい(藁)

535 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:32:37 ]
>>534
漏れは楽しんでるからどんどん過剰反応してくれ

536 名前:495 [2007/07/06(金) 22:34:16 ]
>>533
これだけ例えが分からん奴も珍しい。
心から軽蔑してやるぜ。

537 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:35:55 ]
何を今更、ってたとえ話だろ。



538 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:38:21 ]
文字通りの老害だね。


釣りじゃなければ

539 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:40:12 ]
>>537
原付に乗っていきがっている中学生と似たようなもんだ、ということかと思った。

540 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:44:37 ]
免許持ってるおっさんだと仮定して話してしまった
よく読んだら免許持ってるともおっさんだとも言ってないな
今は反省してる。

541 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:45:14 ]
>521
なるほど。プログラマも更新必須の免許制に白って話だな。
んで、更新場で5000円はらって、「今度のC++09では〜こういう変更が〜」
みたいな話をありがたくちょうだいしろ、と。

542 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:50:41 ]
>>521
法律は法律だろ…。
知らなかったなんて言い訳が通用するはずもない。
悔しいとか関係ないし。

自分で例えにもなってない例えを出しておいて、
よく他人に「例えが分からん」とか言えたものだな。


543 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:53:16 ]
つーかC99ならまだしもC89なんて何年前の話だ

544 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:58:16 ]
こいつの下についてる奴は哀れだな
普段から嬉々として間違ったことばかり言ってるが
「××さんそこはこうですよ」とか突っ込むと
逆切れして仕事にならんから適当な按配に放置されてると見た

545 名前:523 mailto:sage [2007/07/06(金) 23:00:35 ]
>>530
当然だろ。おまえは違うみたいだけど

546 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 23:07:24 ]
ってか、未来のコンパイラで使える技術と、
今の多くのコンパイラで使える技術ってちょっと違わないか?

>>495の内容は、コンパイルして確認できる程度のものだろ。

547 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 23:23:29 ]
>検証してANSI-Cでは動的配列等の初期化ができると分かって来て見たら非難誹謗の嵐だ。
規格に当たれば済むことを、いい加減な検証で分かった気になるとは。

>わざわざお礼を言おうと思ったが、そんな非礼な人間に感謝の気持ちなどなくなった。
例を言うのに「わざわざ」なんて副詞をつけるくらいなら最初から言わない方がましだ。

>そうだよ。俺はANSI-C以前からC使いだった。
別に珍しくもないが、普通は今時のコンパイラに触れているうちに理解するもんだ。

>C++を黎明期から覚えて使い始めてからは、string系クラスが活躍してくれて
string系? std::stringに類似品があったっけ? std::basic_stringのことか?

>外的・静的配列以外に初期化子を使う必要もなかったからな。
無知蒙昧極まれり。

>君らが古いコードをメンテする憂き目に遭うことを祈ってるよ。
憂き目? まさか。温故知新と言う言葉はご存じないかな?



548 名前:495 [2007/07/06(金) 23:33:34 ]
>>538 文字通りの老害だね。

そういう君の方が年上で無知だったりして。
2chで無意味なことを言う奴だ。

>>541
何言ってんの?免許制?そりゃあいい。
仕事だけじゃなく、きちんと新しい仕様を勉強する公な時間がとれるぜ。

君らも仕事するようになったら、アンテナ張るのが限界になることが分かるぜ、学生、失業者。

>>542
お前にゃ『例え』という概念も理解し難いらしい。
この例えが不適切だったと思う奴はちょっとレスしてみろ。

>>543
新しい仕様は受け入れるよ。そろそろ新しいC言語の教本を読む頃だ。
だが、K&R C言語の第2版でさえ、やはり自動変数の初期化子は
目の上のたんこぶ扱いだったようだ。

ゆとり世代がループ内で自動(配列)変数の初期化子なんか使われたら困るぜ。

>>544
安心しろ。会社ははけ口にならんからここに毒を吐いてるんだ。

549 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 23:36:40 ]
アンテナ張るのも辛い職場ってどんだけブラックなんですか

550 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 23:40:36 ]
技術者として新技術の吸収が無理だと分かったら、そいつはもうそこまでだぜ
このおっさんは汎用機と心中するしかないCOBOLerと一緒だな

周囲はゆとりと学生だけなんだ、自分は悪くないんだ、仕事やってりゃ皆こうなんだ、
と思い込もうとしてるんだね

実に哀れだね

551 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 23:43:48 ]
>>548
(´・ω・`)⊃旦 < 毎日お疲れ様です、お茶ドウゾ。

552 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 23:49:41 ]
自分で試さずに「試しに書いてくれ」ってまるでゆとり世代のようだな

553 名前:495 [2007/07/06(金) 23:51:42 ]
>>545
君は自分の無知を自覚しようとしない奴だ。
ソクラテスはそういう事を何と言ったか知ってるか?

>>546
今日コンパイルしたのさ。

>>547
仕事中に新しい機能を覚える時間とそれを検証する時間をくれるなら進んでやるぜ。
社長は君かい(笑)

>string系? std::stringに類似品があったっけ? std::basic_stringのことか?
世の中にはSTLしかないと思っている奴を発見した。
しかも、wstringすら知らない奴もいたもんだ。

それから温故知新の使い方が逆だ。
君の使い方は『古いことを知り、かつ新しい事を知るべきだ』という意味にしかとれないが、
本当の意味は
『新しいことを知るには、古いことを知っておく事も重要だ』という意味。

やれやれ。ゆとり君=>>547


554 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 23:55:42 ]
>>553が憂き目の意味を理解してるかどうかが気になる

555 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 23:57:12 ]
どんどん香ばしくなっていくな

556 名前:495 [2007/07/07(土) 00:03:14 ]
>>550
そういうなよ、ゆとり。
それより、採用試験に向けて、人と目を合わせて話す練習をした方がいいよ。

>>551
サンキュー

>>552
そのときは思いもよらなかったからさ。
今日は仕事が一区切りつけたから検証できたんだ。

>>554
つらい体験

>>555
そう言うなよゾロ目
全員が無視されたら嵐は自然といなくなるんだぜ?

557 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 00:05:03 ]
すごく・・・不毛です・・・



558 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 00:09:45 ]
>>556
憂き目って、単につらいだけじゃなくて悲しいといったニュアンスも入るんだけど理解してる?
それでいて使い方が逆とか言ってる?

559 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 00:14:54 ]
憂うっていうのは残念

560 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 00:20:56 ]
まだやってんのか?
勉強の時間が取れないって割には暇なんだな。

561 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 00:20:58 ]
いつから三つの数字をぞろ目と言うようになったのだろう……

562 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 00:21:58 ]
>>553
> 仕事中に新しい機能を覚える時間とそれを検証する時間をくれるなら進んでやるぜ

こういう人多いんだよねぇ
・プライベートで自己啓発しようという考えが無い
・新しいことにチャレンジして新しい技術を仕事と共に身につけようという考えも無い
・自分に時間的余裕が無いのは上が悪いせいだ

ま、どうぞ勝手に腐ってくださいとしか

563 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 00:23:33 ]
土曜日だからってはしゃぎすぎだろ。
そろそろ寝ろよおっさん。


564 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 00:24:07 ]
>>561
それはふつうに言うんでないか?
ちんちろりんとかサイコロ3つ使うけど

565 名前:495 mailto:sage [2007/07/07(土) 00:28:19 ]
>君らが古いコードをメンテする憂き目に遭うことを祈ってるよ。

>>558
よし答えてやろう。
憂き目がつらい体験というのはおおよそ間違ってないのではないかな。
それとも、『つらく悲しい経験』(goo辞書から抜粋)とでも答えてほしかったのかな?

そして、学生や就職浪人なんぞの世代が古いコードをメンテしたとき、
コンパイラは当時の同じバージョンの処理系で
コンパイルするのが常套ではないか?

もちろん、新しいコンパイラを使っても構わないが、動くように直すより、当時の規格に沿って
メンテした方が遥かに楽な場合が多いだろう。

そして、私の憎む君らが、知るべくもない仕様に基づいたバグにはまり、
(悲しく)つらい体験をするのを祈っているのだよ。

何か変?


566 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 00:31:11 ]
ANSI以前のCで自動変数の配列を直接初期化できないのはまだ有名なほうだと思う。

567 名前:495 mailto:sage [2007/07/07(土) 00:34:10 ]
>>560
眠いと勉強ははかどらないが、悪口ならいくらでもでてくるからなあ。

>>562
おやおや。私がまるで何も勉強してないとでも。
はい。腐るときは勝手に腐るのでいちいち構わなくてもいいですよ。
自称自己啓発君。>>562君がせめて鬱で自殺しませんように(爆

>>563
さっき言っただろう。
嵐の敵はみんなの無視。
眠くなったら寝るから気にするな。




568 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 00:35:46 ]
>>566
んだな。
つうかそれ、もし対応して無いコンパイラを使ったら、コンパイル通らないだけ
じゃん。で、エラーメッセージが出力される。
全然困らんぞ。

ほんとうに昔のソースでは、確信犯的にリテラルを書き換えていることがあるが、
そっちのがまだ困るだろね。
ま、それに気づけば、コード書き換えるなり-fwritable-stringsを指定するなり
すればいいわけだが。

569 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 00:38:05 ]
>>565
「メンテする憂き目」じゃなくて、
メンテする際につらい体験をするのを祈ってるって話だったのか

570 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 00:39:26 ]
みんなこんなおっさん弄ってあげるなんて親切だなあ

571 名前:495 [2007/07/07(土) 01:14:31 ]
>>568
古いANSI-C(K&R第2版の頃な)で

void foo {
int a[100] = {0};
...
}

とでも書いてみたまえ。コンパイルは通るがaの要素がa[0]以外全てランダム値で
深刻なバグに発展するかもしれんね?

つまりだね。たかが一つ昔の仕様を回避したところで、
反証にはならんのですね。

それを何を偉そうに「全然困らんぞ」だって?
自分で気づいて直すならまだマシだが、納品後にクレームの電話。待ちますか?

572 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 01:17:42 ]
納品後ってコンパイル通ったらすぐ納品しちゃうの?そんなに切羽詰った職場なの?

573 名前:495 [2007/07/07(土) 01:28:59 ]
>>572
ハイハイ。君の言ってる事は
「お前は何時何分地球が何回、回ったときに納品した?」
というレベル。

あっちでママが呼んでますよー。『そろそろ寝なさい』だって。ププ

574 名前:495 mailto:sage [2007/07/07(土) 01:31:27 ]
もう厨房しか居ないし、寝るかな。
また明日ー。俺が気に入らなかったら削除依頼でも出しときな。

575 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 01:32:07 ]
明日も来る気ですかw
おっさん忙しいんじゃなかったのかw

576 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 02:03:04 ]
Kusakabe と毛色は違うが同類だな

577 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 02:26:42 ]
削除依頼ワラタ

削除したいのはお前だけだって



578 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 04:20:16 ]
よっぽど自分の間違いを「なかったこと」にしたいんだろうなぁ。
こういう責任の自覚がない香具師が下らん犯罪の元仁になったりするんだ。
くわばらくわばら

579 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 05:51:35 ]
新しい仕様はC++には取り入れられないのかな?

580 名前:デフォルトの名無しさん mailto:s [2007/07/07(土) 05:51:49 ]
新しい仕様はC++には取り入れられないのかな?

581 名前:デフォルトの名無しさん mailto:s [2007/07/07(土) 05:51:57 BE:115689986-2BP(7)]
新しい仕様はC++には取り入れられないのかな?

582 名前:デフォルトの名無しさん mailto:s [2007/07/07(土) 05:52:02 ]
新しい仕様はC++には取り入れられないのかな?

583 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 10:19:27 ]
>>524
そんな問題とは違うだろ
新しいルールは後から参加してきた守銭奴によって政治的に作られるんだから
自然の法則に従って限界に達して出てきた障害とは一緒にするな


584 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 10:23:09 ]
>>579-582
www.open-std.org/jtc1/sc22/wg21/

585 名前:495 mailto:sage [2007/07/07(土) 10:55:13 ]
なんだ。捨て台詞しかないのか。ツマラン

586 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 11:04:21 ]
windowsのSIZEとかPOINTとかRECTの構造体で、
メンバの型をtemplate構文を使うことにより自由に決められるやつってありますか?
こういうのって絶対誰もが考えると思うんだけどWTLにすらなくて・・・
自力で実装するしかないんでしょうか?(´・ω・`)

587 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 11:07:04 ]
はあ?



588 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 11:10:46 ]
>>585
いい加減ネタも尽きて来たしな。

>>586
ないね。俺も考えたことあるけど。

589 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 11:29:17 ]
>>586
あるよ。ほら。
template<typename T>class size
{
T width_;
T height_;
public:
size() : width_(), height_() {}
size(T width, T height) : width_(width), height_(height) {}
size(const size & foo) : width_(foo.width()), height_(foo.height()) {}
size & operator=(const size & foo) {width_ = foo.width(); height_ = foo.height(); return * this;}

bool operator==(const size & foo) const {return width() == foo.width() && height() == foo.height();}
T width() const {return width_;}
T height() const {return height_;}
T area() const {return width() * height();}
};
今作ったからバグってるかも知れないけど。

590 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 13:03:31 ]
環境依存すらOKのスレで、
古いANSI-Cが前提となっている理由が理解できない。
それは君の勉強不足だろうと。

591 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 13:18:15 ]
やっぱ無いんですね・・・
とりあえずsizeは参考にさせてもらいます
仕方ないのでboostとか使ってSTL対応の格好いいのを作っちゃうことにします(`・ω・´)
いざ出来ても動作が重いとかサイズを食うとかで結局使わない感バリバリですが…

592 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 13:22:47 ]
つうかWin32APIに渡す時点で構造体サイズは結局そこに合わせなきゃいけないから
RECT<float>とかしたところでたいした意味はない

593 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 13:29:28 ]
結局変換の時に一時オブジェクト生成する分オーバーヘッドになるだけですか…
それでもAPIに渡すまででポータブルに扱う分には役立つだろうと思ったけどあまり意味無いですね(´・ω・`)

594 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 13:32:55 ]
>>593
>589程度のクラスなら、どうせ最適化で消えるだろうからどんどん使えば?
size, point, rect辺りの綺麗にまとまったテンプレートクラスにして公開してくれたら
積極的に使ってあげるよ。

595 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 21:38:05 ]
C++の質問があります。
map<int, FUNC> MAP;
キーをint型、値を関数ポインタで、関数ポインタに関しては、他のクラスのメンバ関数も
セット出来るようにしたいのですが、FUNCの定義の仕方がイマイチ分かりません。

御願いします。

596 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 21:40:05 ]
>>595
メンバ関数ポインタを他のクラスのも使えるようにするってあーた・・・・
thisポインタをどうやって区別するつもり?

597 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 21:40:20 ]
boost::function



598 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 21:46:26 ]
>>595
つBoost.Bind


599 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 21:47:36 ]
>>598 bind は型じゃないだろ。

600 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 21:49:57 ]
仮想関数へのポインタなら、基底クラスの関数ポインタを使っとけば大丈夫。

601 名前:デフォルトの名無しさん mailto:age [2007/07/07(土) 23:36:29 ]
オーバーロードされたコンストラクタについて質問です。

class A
{
  int data;
public:
  A(int x, int y){
    data = x+y;
  }
  A(int x){
    A(x, 0);
  }
};

のような感じで、2つ目のコンストラクタは1つ目のコンストラクタを内部で呼んでいるのですが、
うまく値が入りません。
(これは例なので簡単にしてありますが、実際はもっと複雑なことをしています)
コンストラクタの中で別のコンストラクタを呼ぶことはできないんでしょうか?
いちおうコンパイルは通るのですが。

602 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 23:39:16 ]
できない。
A(x, 0)は単に一時オブジェクトを作る式となるだけ。
元のオブジェクトとは何の関係も持たない。

603 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 23:41:01 ]
何でデストラクタは単体で呼べるのにコンストラクタは呼べないの?

604 名前:601 mailto:sage [2007/07/07(土) 23:42:02 ]
なるほどそういう意味ですか。
ではどうするのがスマートなやりかたでしょうか?
初期化用の関数を作ってそれぞれのコンストラクタから呼ぶのがいいんでしょうか?

605 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 23:47:29 ]
結局それが一番だよ。

606 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 23:47:43 ]
>>603
placement new を使えば単体でコンストラクタを実行することはできる。
でもコンストラクタの中で自身に対して使っても正しい意味は成さない。
デストラクタだって、デストラクタの中から自身に対して呼んだりしちゃいけない。

607 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 00:13:21 ]
deleteするとき、与えられたポインタの型が元のポインタの型ではなかった場合でも、正常に削除できますか?

int *int_ptr = new int;
void *void_ptr = reinterpret_cast<void *>(int_ptr);
...
delete void_ptr;



608 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 00:24:20 ]
PODならmalloc/freeでいいんでないの。

609 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 00:38:01 ]
>>607
deleteでは、オブジェクトのデストラクタを呼んだ後
メモリを確保する必要があって
そのデストラクタが正しく呼べるなら違うポインタ型にしてもOk。

610 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 00:48:13 ]
みなさんデストラクタの戻り値はチェックしていますか?

611 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 00:49:47 ]
>>610
基本中の基本

612 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 00:56:12 ]
僕はコンストラクタの戻り値もチェックしてまつよ(`・ω・´)


613 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 00:56:44 ]
>>610 無理。

614 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 00:59:01 ]
>>607 ダメ。未定義動作。 5.3.5p3

615 名前:デフォルトの名無しさん [2007/07/08(日) 01:13:30 ]
C++を始めてする人にオススメという本はないでしょうか
自分はC言語を少し齧った程度で、オブジェクト指向の意味すらわかりません

616 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 01:19:40 ]
>>615
メイヤーの「Eiffelオブジェクト指向入門」がオススメ


617 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 01:27:51 ]
>>616
教えてくれてありがとうございます、明日辺り早速本屋で探してこようと思います



618 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 01:39:11 ]
おいおい

619 名前:617 mailto:sage [2007/07/08(日) 01:40:38 ]
>>618
おいおいとか言われたら不安になるじゃないかぁーーー!!

620 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 01:41:25 ]
おれはこのページだけで勉強した
ttp://www.asahi-net.or.jp/~yf8k-kbys/

少し古いけど初心者が勉強するには十分

621 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 01:49:14 ]
>>620
全俺が感動した

622 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 02:04:16 ]
>>617
俺もその本は持っているが、とても実践向きじゃない。
十数年前はオブジェクト指向なんて言葉自体珍しかったから、名前だけで買ってしまった。

Eiffel(エッフェル)なんて、謎の言語を覚える気なら敢えて止めはしない。


623 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 02:24:20 ]
オブジェクト指向理解のためなら、JavaかC#あたりのほうがとっつきやすい。
C++はいろいろ細かいルールが多すぎて焦点がぼける感がある。

624 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 02:37:45 ]
細かいルール云々というよりC++はマルチパラダイムなために、
オブジェクト指向に限らないというのが逆に理解のネックになるのかもな。

初心者だった頃先輩に薦められてModernC++Designを読んだときは一気に挫折しかけたwww


625 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 07:30:41 ]
SADでも必死に会社に行っている人 [メンタルヘルス]

626 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 07:57:28 ]
>>607
"デストラクタ virtual" でぐぐれ

627 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 08:41:03 ]
>>620
そのサイトは間違いを指摘しても直さないから余りお勧めできないが。



628 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 09:14:02 ]
最初に勉強に使ったページ
www.asahi-net.or.jp/~yf8k-kbys/newcpp0.html

www.geocities.jp/ky_webid/cpp/language/index.html
補足に使ってるページ
www.cmagazine.jp/src/kinjite/cpp/index.html
homepage2.nifty.com/well/Index.html
www.scl.kyoto-u.ac.jp/scl/appli/appli_manual/SUNWspro/WS6U2/ja/manuals/stdlib/user_guide/general/index.htm
www.s34.co.jp/cpptechdoc/


629 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 09:44:26 ]
>最初に勉強に使ったページ
www.asahi-net.or.jp/~yf8k-kbys/newcpp0.html
>627

www.geocities.jp/ky_webid/cpp/language/index.html
不明。

>補足に使ってるページ
www.cmagazine.jp/src/kinjite/cpp/index.html
ダメダメ。

homepage2.nifty.com/well/Index.html
www.scl.kyoto-u.ac.jp/scl/appli/appli_manual/SUNWspro/WS6U2/ja/manuals/stdlib/user_guide/general/index.htm
www.s34.co.jp/cpptechdoc/
不明。


630 名前:デフォルトの名無しさん mailto:s [2007/07/08(日) 09:55:37 ]
C の勉強を K&R だけでやった。
C++ というかオブジェクト指向の入門を C Magazine の
連載だったと思う A級B型C++ だけでやった。

あとはテクニック本をよみつつ、本当に疑問に思った仕様は
おおもとの仕様書(規格書)にあたる。

631 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 10:02:40 ]
>>627
暇そうなのにね

632 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 10:05:09 ]
不明=別にどっちでもいいよって事だな
えぴの記事は内容は古いけど初心者がC++の深遠を覗くにはいいと思うし
あとC++プライマーとか普通の入門書を一冊手元においておけばどんなページでも役に立つと思うぜ

633 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 10:06:09 ]
>>630
仕様とパラダイムは違うからねぇ

634 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 10:39:28 ]
VC++とWin32APIプログラミングの違いが分かりません(´・ω・`)

635 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 10:51:09 ]
ワープロと小論文の違いがわかりませんと言われても困る。

636 名前:デフォルトの名無しさん mailto:s [2007/07/08(日) 11:12:10 ]
VC++使ってるけど Win32 API なんてほとんど使わないなぁ。

637 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 11:44:44 ]
俺ライブラリとかATLとかその他公開されているライブラリにラップして使ってる人が殆どだと思う



638 名前:デフォルトの名無しさん [2007/07/08(日) 13:28:24 ]
10年前にVC++6.0使ってたんだけど、
今はWindowsでのC++開発環境って何がメジャーなの?
VC++2007ってありますか?

639 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 13:30:39 ]
残念ながらVS2008になりそうです

640 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 13:41:35 ]
>>638
「VC++」でぐぐるとVisual Studio 2005のページが出てくるから、とりあえずそこ読んでおけ

641 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 13:44:19 ]
cygwin/gcc/g++
mingw


642 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 15:24:33 ]
コンパイル時に数が決まっている要素の数をカウントしたいんですが、

643 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 15:29:09 ]
elementofマクロの話?

644 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 15:47:34 ]
すみません。途中で送信されてしまったようです。
コンパイル時に数が決まっている要素(あるクラスを継承しているクラス)の数をカウントしたいんですが、
マクロの様なものを単純にコピペするだけでカウントするにはどうすればいいんでしょうか。

645 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 16:01:43 ]
詳細が分からんと何も言えん

646 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 16:18:54 ]
あるクラスを継承しているクラスの総数を知りたい?
それはリンク段階でしか判らないこと無いか?

647 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 16:36:31 ]
同一ソースコードに書いてあるので、コンパイル時にコードを下へ逐次見ていくだけで機械的にカウントできます。



648 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 16:37:28 ]
今boost::preprocessorを使ってもがいてます...

649 名前:デフォルトの名無しさん [2007/07/08(日) 16:46:40 ]
VC++1.51をWIN98で使ってるんですが、DOSのプログラムを組んで走らせると
ハングする事が多いです。BCC5.5でコンパイルすると問題無く動くのですが。
1.51でDLL16使うのはWIN95までしか対応してないのでしょうか。

650 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 16:58:25 ]
>>649
IDE自体はWin9x/NT系で動かすとハングしやすいな。
デバッグ実行は特にめろめろだが、
作ったプログラムが単体でハングするならそれはあなたの作ったバグ。

651 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 18:10:53 ]
builderで、警告が100個超えたら、
「エラーあるいは警告が多すぎる」と、最後にエラーが出てきました。
警告の上限の数は、決まってますか?

652 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 19:26:18 ]
C言語でputchar('a');みたいに'あ'を出力するにはどうすれば良いでしょうか?

ググってみたら
#include <stdio.h>
 #include <wchar.h>
int main(void)
{
putwchar(L'あ');
return 0;
}
こうかと思ったのですが、どうも違うようでよく分からないですorz

653 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 19:27:39 ]
printf("あ");

654 名前:デフォルトの名無しさん mailto:s [2007/07/08(日) 19:27:52 ]
Visual C++ 2008 になったら tr1 とかも実装されるのかな。
C99 互換モードとかもつくのかな。

655 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 19:28:17 ]
>>651
コンパイラ次第

656 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 19:31:01 ]
>>653
書いた後でそう言われそうだと思ったけど、
そういう意味じゃなくて、
int hoge='a';
putchar(hoge);
こういう感じで'あ'を扱うにはどうしたら良いでしょうか?

657 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 19:36:28 ]
a と あ って全然違うだろ。1バイトと2バイトだし



658 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 19:37:19 ]
UTF-8 なら3バイト。

659 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 19:39:29 ]
>>656
char hoge="あ";
putchar(hoge);

660 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 19:39:44 ]
>>659
コンパイルエラー

661 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 19:40:43 ]
wint_t hoge='あ';
putwchar(hoge);

662 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 19:40:44 ]
>>659
それなら、
char hoge[]="あ";

にしないとまずいだろ。

663 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 19:43:25 ]
あまりにもひどい流れだ

664 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 19:48:08 ]
>>660
自分もそうやるのかと思ったんですが、
それだと何も表示されないです。(VC++2005で)


665 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 19:56:05 ]
ぬるぽ

666 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 19:56:43 ]
666

667 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 20:02:53 ]
ロケール?



668 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 20:06:59 ]
あはなぁ・・・・

669 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 20:16:32 ]
文字型を文字列で初期化できるわけねーだろ

670 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 20:22:14 ]
>>652
↓で良いが、例えばVC++8.0(VS2005)ではバグによって何も表示されない。
wchar_tやロケールまわりをまともに使える処理系か確認するこった。

#include <stdio.h>
#include <wchar.h>
#include <locale.h>
int main(void)
{
    setlocale(LC_CTYPE, "");
    putwchar(L'あ');
    return 0;
}

671 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 20:29:35 ]
wchar_t を使う事は根本的な解決になってるんだろうか。

672 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 21:06:30 ]
>>652
#include <stdio.h>
#include <wchar.h>
#include <locale.h>

int main(void)
{
setlocale(LC_ALL, "");
putwchar(L'あ');
return 0;
}
Visual C++ 2005だとこれだけではバグってだめみたいだけど。


673 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 21:23:41 ]
>>670,>>672
ありがとうございます。
ちょっとbcc入れるのに手こずってました。
bccだと無事に動くっぽいですが、VCではダメなんですね。
しかしこれって単純に出来るものかと思ってたら、
意外と上手いこといかないものなんですね><

674 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 21:25:33 ]
>>673
VC++でも以前のバージョンなら問題なく動くんだがな

675 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 21:39:11 ]
Visual Studio 2005買うか迷う
早く2007か2008発売してくれたらいいんだけどな…

676 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 21:41:47 ]
今買うのはいかにも時期が悪いだろう
バグ持ちだしな(SPでも直ってねぇし)

677 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 22:26:22 ]
おれはEclipse派



678 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 22:50:56 ]
あれだけ難しいと思ってた「C言語ポインタ完全制覇」が今なんとなく読んだら
全部スラスラと理解できてワロタ
昔買った本読み返すとあぁ俺ちゃんと成長してると実感できてうれしいなw

679 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 22:52:44 ]
ちょうどあるから読んでみよっと

680 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 22:55:05 ]
Modernはいまだに7割くらいしか理解できん…


681 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 23:54:54 ]
>675
2008は4Q(多分12月ごろ)。MSDNにすれば?

682 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 01:30:28 ]
すみませんが質問です。
ある関数のバイナリを表示するプログラムを作ったのですが思ったとおりに表示されません。
source:
#include <stdio.h>

int func(void)//この関数のバイナリを表示したい。
{
  return 0x12345678;
}

void fend(void){}//func関数の終わりをこの関数のアドレスから求める。

int main(void)
{
  char *p;
  char i;
  p = (char *)func;//func関数のアドレスをchar型のポインタへ代入。
  for(i=1; p<(char *)fend; i++) {
    printf("%2.2X ", *p++);//func関数のバイナリを1バイトごとに表示。
    if(!(i%16)) putchar('\n');//とりあえず16バイトごとに改行。
  }

  return 0;
}
result:
55 FFFFFF8B FFFFFFEC FFFFFFB8 78 56 34 12 5D FFFFFFC3

55 8B EC B8 78 56 34 12 5D C3と表示されるのを期待していたのですがうまくいきません。
コンパイラはBorlandコンパイラです。
根本的な間違いの指摘、もしくは強引な方法でうまく表示させる方法を教えてください。

683 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 01:34:30 ]
>>682
そこまでできてるんなら char を unsigned char にすればいけそうな気はするね。
でも、移植性のあるコードじゃないことは理解しておけよ。

684 名前:682 mailto:sage [2007/07/09(月) 01:36:30 ]
>>683


685 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 01:37:00 ]
pの型を char → unsigned char

686 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 01:38:46 ]
ついでに、%2.2Xは%Xで大丈夫な希ガス

687 名前:682 mailto:sage [2007/07/09(月) 01:39:53 ]
ミスりました。
>>683
ありがとうございます。
解決できました。
移植性のないコードであることは百も承知でございます。
cl.exeでコンパイルするとうまくC3のret命令で終わらなかったです。
ただ、アセンブリの勉強のために作ったので自らの環境で動けば問題なしです。
ご丁寧にどうもありがとうございました。





688 名前:デフォルトの名無しさん [2007/07/09(月) 01:45:28 ]
1byte文字、2byte文字が混ざった文字列から、
1文字ずつ読み込んで、これが1byteか2byteか判定するにはどうしたら良いでしょうか?

お願いします。

689 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 01:48:08 ]
txtから数字を読み込んでバブルソートするプログラムを組みたいのですが
(数字は一行ずつ記述された状態)
出来ればそのあとさらにtxtに出力したいです
fgetsに関する記述方法がいまいち理解できないです
この後にどのような記述をすればいいのでしょうか

#include<stdio.h>
#include<stdlib.h>
#define swap(type,x,y) do{type t=x;x=y;y=t;}while(0)
int bubble(int a[],int n)
{
int i,j;
for(i=0;i<n-1;i++){
for(j=n-1;j>i;j--){
if(a[j-1]>a[j]){
swap(int,a[j-1],a[j]);
}
}
}
}
int main(void)
{
FILE *fp;
if((fp=fopen("data.txt","r"))==NULL){
printf("file open失敗\n");
exit(1);
}
while(fgets(

690 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 01:49:02 ]
gccだと型そのままでも %02hhX にすれば問題なく表示できるんだが
bccでも同じなのかどうかは知らない
まぁ、バイナリ扱うなら unsigned char にしとくほうが良いだろうけど


691 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 01:56:53 ]
>>689
フォーマットが固定ならfscanfで読み込んでfprintfで出力すれば良いだけだと思うけど

fgetsで読み込みたいなら読み込んだ奴をstrtolするかsscanfにかければいいし


692 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 02:08:14 ]
カレーが食べたいよ

693 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 04:08:03 ]
>>678
遅レスだけど、俺もスラスラ読めて、さらには
「JAVAだとどうだとか、ほっといたれや」
とまで思ったりして、はじめ読んだときは「なるほどな〜」と
思ってたのに、今じゃ文句までつけやがる俺。
どんどんひねくれていく自分に嫌気がさす。

694 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 07:03:58 ]
>>682
func と fend がメモリ上で連続する保証はあるの?

695 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 08:13:30 ]
>>694
ない。でも>>687

696 名前:デフォルトの名無しさん [2007/07/09(月) 14:14:04 ]
age

697 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 14:15:09 ]
sage



698 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 15:40:00 ]
おしえてください (VC++ 6.0 MFC)
エディットコントロールに複数行の文字列を表示させた時、
その時のスクロールの位置を一番下の行にしたいのですが、うまくいきません。
m_editMsg.SetWindowText( m_strLog );
m_editMsg.SetScrollPos( SB_VERT, m_editMsg.GetScrollLimit( SB_VERT ) );
この処理を行うと、スクロールバー自体は一番下の行に移動した様な表示になるのですが、
表示される文字列データは、先頭部分が表示されてしまいます。
どうしたらいいのか教えて下さい。お願いします。

699 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 16:24:14 ]
エディットは、キャレットの位置を動かせ
EM_SETSEL 使えばいいかな。

700 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 16:44:31 ]
>>687
関数間が NOP (90h) で埋められてるなら
NOP が出てくるまで・・・と出来そうな気はするけど、
コードの途中で境界合わせに NOP が出てこない保証もないし、
ダメかなあ・・・。

701 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 16:58:25 ]
>>700
定義順に関数アドレスが並ぶ保証はどこにもないよ

702 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 17:12:31 ]
>>699
ありがとうございます。調べてみます。


703 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 17:51:57 ]
>>701
?

704 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 18:17:06 ]
>>700
関数間がNOPで埋められる保証もどこにも無いよ。

705 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 19:37:39 ]
>>704
「関数間が NOP (90h) で埋められてるなら」
という条件付きで話してる事に、そう言われても・・・

706 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 19:42:30 ]
この手の板にはよくあること

707 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 19:43:36 ]
関数のアドレスが、ジャンプテーブルだったりするのも
よくある話。



708 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 20:06:18 ]
C++だけではGUIって作れない?
API勉強しないとだめ?

709 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 20:09:33 ]
>>708
「C++だけ」ってのが「標準C++ライブラリだけ」ってことならyesだな

710 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 20:19:22 ]
>>709
ありがとう。さすがにCUIばっかりで飽きてきちゃったからAPI勉強してみる(`・ω・´)

711 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 20:34:28 ]
>>709
否定形の問いかけに対して安易にyesと答えてはいけないw

712 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 20:56:37 ]
>>705
VC2005だとそうなっては無かったから、
結構多くのコンパイラでその仮定は間違っているんじゃ無いの? と思っただけ。
どっちにしても>>700はあんまり意味無さそうだね。

713 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 21:24:20 ]
>>707
vc8のインラインアセンブラだと
 × call printf
 ○ call dword ptr [printf]
 ○ call test_func
 ○ call dword ptr [test_func]
(test_funcは同じオブジェクト内の自作関数)
じゃないとうまく動かなかった。
不思議なような、そうでもないような。うーん。

714 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 21:32:18 ]
call printfがだめなのは、ランタイムDLLを使っているからという可能性は無い?

715 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 21:40:08 ]
>>714
That's right !  そのとおりだった!

ってか、前にMTでテストしたはずだったんだけどな・・・orz

716 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 23:51:37 ]
関数最後のサブルーチンコールはジャンプで実装する最適化もあるぞ。

717 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 00:19:18 ]
>>712
昔の VC6 くらいそうなってなかったかなあ。



718 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 09:55:26 ]
2005もDebugとReleaseで違うしな

719 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 21:51:23 ]
質問です。

基本的にMFCのDoc-Viewを用いたプログラムです。自分で生成した特定の
ウィンドウのスナップショットを、画像に保存したいのですが、どのようなアプローチで
進めたらいいのか悩んでいます。

1. 非アクティブまたは非表示な場合でも、フレームを含めたウィンドウ全体を
画像として取得するような手段はあるのでしょうか?

2. 1.が不可能なら、非アクティブまたは非表示で、ウィンドウの内容(例えばCViewの
中身)のみを取得する手段はあるのでしょうか?

XP VC2005 SP1

720 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 22:07:13 ]
fgets(str,N-1,stdin);
printf("%d",(int)strlen(str));

↑な感じのコードを書いて実行させると、
【実行画面】
>hoge
5

となるのですが、これってどうなっているのでしょうか?

721 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 22:12:05 ]
hogeの後に改行文字がくっついてて、それも数えられてるから

722 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 22:14:58 ]
あぁ、改行文字を読み込んでたのか!
ヌル文字は入れないはずなのになんでかと思ったら…。
>>721サンクスです!

723 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 23:00:52 ]
>>718
2005だとRelease,Debugとも基本的にNOPは使ってないよ。

724 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 23:24:29 ]
char str[10]="piyo";

これでstrが指す場所を"yo"にしたいのですが、
どうすれば良いでしょうか?


725 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 23:25:23 ]
>>724
strcpy(str, "yo");

726 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 23:28:13 ]
>>725
char *str2 = &str[2];

727 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 23:31:52 ]
>>725
文字列をコピーしたいってより、yoの場所まで移動させたいのです。
array[i++]=strtol(str,&err,0);
これを繰り返し行う際にstrをstrから任意のバイト分進めた値にして
文字列を完全に走査、数値格納したいのです。



728 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 23:39:50 ]
そのstrは配列だからそもそも指すとかそういう表現はしない
&str[2]とかstr+2好きなように表記すればよか
これが気持ち悪いなら別途charへのポインタ用意して
char *p=str;
とした後に読み進めたいバイト分だけp+=2みたいにインクリメントすればいい

729 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 23:41:26 ]
char* p = &str[2];
でいいんじゃね

730 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 23:44:48 ]
str[i]2

731 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 23:46:04 ]
>>727
strtol の使い方が知りたかっただけなんだね

#include<stdio.h>
#include<stdlib.h>

int main(void){
long value[100];
char str[]="100 200 300 400 500 x 600 777";
char *ptr=str, *endptr;
int i, value_num=0;

for(value_num=0;value_num<100;value_num++){
value[value_num]=strtol(ptr, &endptr, 10);
if(ptr==endptr) break;
ptr=endptr;
}

for(i=0;i<value_num;i++){
printf("%ld\n", value[i]);
}

return 0;
}

732 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 23:47:28 ]
>>726,>>728-729
なるほど、ありがとうございます。
それを参考にちょっと今から思った通り出きるか作ってみます。

733 名前:732 mailto:sage [2007/07/11(水) 00:34:56 ]
で、出来た…。
>>731さんのものを参考に、一行にある複数数字(途中非数字あり)
を格納して表示するプログラムを作ってみました。
これってあと直すところとかどうでしょうか?

>12 32 aaa43jfie55 32
たとえば入力が上のようなら、
12,32,43,55,32が配列に格納されて表示される仕様です。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 256
int main(void){
long value[N];
char str[N];
char *ptr=str, *endptr;
int i, value_num=0,l;
fgets(str,N,stdin);
l=strlen(str)-1;
for(i=0;i<l;i++){
if(strtol(ptr, &endptr, 10)!=0)
value[value_num++]=strtol(ptr,&endptr,10);
ptr=++endptr;
}
for(i=0;i<value_num;i++){
printf("%ld\n", value[i]);
}

return 0;
}

734 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 00:37:08 ]
#define N 256

735 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 00:37:13 ]
あれ、>>732>>731さんへのアンカを入れ忘れてました…。
申し訳ない、>>731さんも激しくありがとうございます。

736 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 01:01:54 ]
どなたかC++に詳しい方、教えてください。今日、はまりました。
以下ClassAに、オーバロードしたfunc()という関数が2つがあるとします。
ClassAを継承したClassBをnewし、classb->func(NUM_2);をコールすると、期待通りに
ClassA::func(NUM)がコールされるのですが、(1)だけオーバライドしたClassCを
newし、classc->func(NUM_2);をコールするとClassC::func(int, NUM)がコールされて
しまいます。
期待した動作はClassA::func(NUM)がコールされる事でした。
これはC++の仕様なのでしょうか。コンパイラがどういう論理でenumを使用した関数の
オーバライド/オーバロードを解決しているのかご存知の方、ご教示お願いします。

enum NUM { NUM_1, NUM_2, NUM_3 };
class ClassA {
virtual int func(int a, NUM b = NUM_1); // ←(1)
virtual int func(NUM a = NUM_1); // ←(2)
};
class ClassB : public ClassA
{
// ClassAの(1),(2)はオーバライドしていないクラス
};
class ClassC : public ClassA
{
// ClassAの(1)だけをオーバライド
int func(int a, NUM b = NUM_1);
};

737 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 01:03:17 ]
www.fides.dti.ne.jp/~oka-t/cpplab-hide-overload.html



738 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 01:06:12 ]
呼び出し側のコードはどうなってんの

739 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 01:12:08 ]
NUMばっか出てきてとか見づれーんだよ。もっと考えて書けよドカスが
>classc->func(NUM_2);をコールするとClassC::func(int, NUM)
理由は>>737
ClassCでfunc(int,NUM)を宣言しちゃったから、ClassAのfunc(int,NUM)が見えなくなってる。
あとvirtualな関数にデフォルトパラメータつけるな

740 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 01:58:14 ]
>>737
>>738
>>739
見づらくてすいません。
C++にそんな仕様があるとは知りませんでした。
ありがとうございました。

参考までに
>あとvirtualな関数にデフォルトパラメータつけるな
は何故でしょうか?

741 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 02:10:29 ]
デフォルトパラメータは静的な型に依存する

class B{
virtual void foo(int a=300){std::cout << a;}
}
class D{
void foo(int a=100){std::cout << a;}
}

B* pb = new D();
pb->foo(); //300と表示される

D* pd = new D();
pd->(foo); //100と表示される

だった筈

742 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 02:11:50 ]
>>741
> pd->(foo);
モチツケ

743 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 02:24:20 ]
>>741
なるほど。納得しました。
ありがとうございます。


744 名前:デフォルトの名無しさん [2007/07/11(水) 10:08:49 ]
>>188
PHPアプリとCアプリとログ出力先を共通化という
無茶な事を要求されているときも
行単位の一発書き込みなら大丈夫かな?

2プロセス立ち上げてそれぞれ適当に書き込みをさせて
100万回くらいテストしたんだけど これで混ざんなかったから
多分大丈夫だよね?

745 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 10:52:14 ]
>>744
「行単位の一発書き込み」がシステムコールレベルでそうなっているなら大丈夫。
具体的には、(直接的または間接的に)O_APPENDでopen()されており、write()
一発で1行を書き込んでいるなら大丈夫。
それから少しでもズレるならダメ。

Win32の場合、O_APPENDに相当する機能がCreateFile()に存在しないので、
*必ず*排他が必須になるようだ。

746 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 14:55:19 ]
質問失礼します。
シャノンの符号化法による符号語生成プログラムと、
表計算ソフトを用いた符号語生成の違いについて説明して頂けないでしょうか?
よろしくお願いします。

747 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 16:23:30 ]
>>746
表計算ソフトを用いた符号語生成って、何のことか教えて。



748 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 21:59:26 ]
>>743
ちなみに741の問題を回避するためにもNVIパターンが使えるぞ。

749 名前:デフォルトの名無しさん [2007/07/12(木) 08:23:23 ]
すみません
string型でファイル名を持っているとき、それをオープンしようとすると
エラーが出ます。char型にするにはどうすれば良いですか?

750 名前:749 [2007/07/12(木) 08:26:48 ]
自己解決しました

751 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 08:26:59 ]
つc_str()


752 名前:デフォルトの名無しさん [2007/07/12(木) 08:27:49 ]
ありがとうございました

753 名前:デフォルトの名無しさん [2007/07/12(木) 08:51:04 ]
ファイルを読み込むとき、終端で必要以上のサイズを
読み込むと配列が最後まで埋まってしまいます
どうすれば実データのみ読めますか??

fp.read(str,N); とすると strのサイズはNになります

754 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 08:58:00 ]
何使って読み込んでるの? fp の型は?


755 名前:デフォルトの名無しさん [2007/07/12(木) 09:04:02 ]
fstream fp ("filename", ios::in | ios::binary );

なんですけど、fp.read(str,N); の戻り値は、istream 型です

どうすればサイズがわかりますか??


756 名前:755 [2007/07/12(木) 09:24:03 ]
自己解決しました

fp.gcount();で読み込みサイズが出ました






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<194KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef