[表示 : 全て 最新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

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