■過去ログ置き場に戻る■ 1- 前250 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

C++相談室 part54
751 名前:デフォルトの名無しさん :2006/11/25(土) 07:03:16
c++では不要。
つまり、必要な処理系があればそれはc++ではないということだ(ぉぃ

752 名前:デフォルトの名無しさん :2006/11/25(土) 10:05:08
>>751
必要かどうかを聞いているのではなく、つけても問題ないかということじゃない?
つけても問題ないがつける意味は無い。

753 名前:デフォルトの名無しさん :2006/11/25(土) 12:06:37
カスタムiostreamの実装って難易度どれくらいですか?
何もしないNULLstreamがほしいんですけど。。。

754 名前:デフォルトの名無しさん :2006/11/25(土) 12:11:36
なんかWin32のOutputDebugStringをiostream化したページが
どこかにあったからそれ参考にするとか

いくつかのメンバを実装するだけだから難しくないかと

755 名前:デフォルトの名無しさん :2006/11/25(土) 12:12:03
つ[/dev/null]

756 名前:753 :2006/11/25(土) 13:12:33
レスありがとー。
なぜほしいかというと、クラスにiostreamのポインタを持たせて、コンソールにだしたりファイルにだしたりしたかったからです。


>>754
なるほど!できるかなー。
ちょっと探してみます。

>>755
いやー、ウインドウズなんですよ。提案は感謝。


757 名前:デフォルトの名無しさん :2006/11/25(土) 14:04:33
>>756
つ iostreamで使えるかしらんが、nullデバイスはあるぞ。
echo "hoge" > nul

('A`) さて、javaにもどるか

758 名前:デフォルトの名無しさん :2006/11/25(土) 14:08:32
>>756
('A`) ええのあったで
ttp://www.kab-studio.biz/Programing/Codian/iostream/06.html

759 名前:デフォルトの名無しさん :2006/11/25(土) 14:37:38
>>753
もし Boost を許容できるなら Boost.Iostreams を使って以下のようにできる

boost::iostreams::null_sink snk;
boost::iostreams::stream< null_sink > os( snk );
os << "hoge";

760 名前:デフォルトの名無しさん :2006/11/25(土) 14:59:55
>>756
Windowsなら>>757というわけでnulが/dev/nullに相当する。

761 名前:デフォルトの名無しさん :2006/11/25(土) 15:04:53
>>757
およ、そんなことできたんですね。何に使うんだろ??

>>758
よさげですね。ちょっと読んでみます。

>>759
Boostは見るたびにスゲーっておもうんですが、なんせ範囲がでかいもんだから、僕の許容量こえてるんですよね。TT
次期標準になってコンパイラについてくるようになったら覚えようと思ってます。
今回は見送りますが、提案には非常に感謝。

762 名前:デフォルトの名無しさん :2006/11/25(土) 15:15:43
>>760
用途が良くわからないけど便利なんですかね。
--

うんで、
>>758を流して読んでみたんですけど、streambufをがりがり書くかiostramに委譲すればできそうな感じですね。
ご協力感謝!

763 名前:デフォルトの名無しさん :2006/11/25(土) 16:15:02
>>762
コマンドラインレベルで作業しない人にはイメージが伝わりにくいけどこんなとき便利。

・余計な出力は見たくない
make > /dev/null

・空の入力を与えたい
awk 'BEGIN {print sqrt(2);}' /dev/null

764 名前:デフォルトの名無しさん :2006/11/25(土) 17:00:28
linuxrcなんかによく使うよね。

765 名前:デフォルトの名無しさん :2006/11/25(土) 17:17:33
struct : std::streambuf {} g_dummybuf;
std::ostream nullstream(&g_dummybuf);
俺、こんなんでやってた。もうどうでもいいね。じゃぁ

766 名前:デフォルトの名無しさん :2006/11/25(土) 18:13:45
Effectiveなんとかとか、Exceptionalなんとかとか、内容被ってそうなが本が
多すぎです。
取りあえず Exceptional C++ は読んだんだけど、次に読むとしたら
何がお薦め?

767 名前:デフォルトの名無しさん :2006/11/25(土) 18:18:14
>>766 >>3 の次ってことで >>4 がいいんじゃない?

768 名前:デフォルトの名無しさん :2006/11/25(土) 18:47:41
>>767
なるほど。 template 周りも一冊読んでおくべきかな。
あんまり深入りする気はないけど、最近の変態 C++er のコードを読める程度には
なりたいしなぁ。 C++ Templates 良さげだけど…分厚いな…。

落し穴に嵌まらないためのノウハウ的な方向は Exceptional C++ で
足りてるのかな。なんかあれ読んだら無性に不安になって…。

769 名前:デフォルトの名無しさん :2006/11/25(土) 23:33:54
>3 は全部読んだほうが良いと思う。
重複は気にしない。重要だから繰り返されているということですな。


770 名前:デフォルトの名無しさん :2006/11/25(土) 23:36:07
おっと、The C++ Programming LanguageとC++ Primerはどっちか読めばよさげ。

771 名前:デフォルトの名無しさん :2006/11/25(土) 23:53:11
変態 C++コードが飛び交う現場なんて本当にあるんだろうか

772 名前:デフォルトの名無しさん :2006/11/26(日) 01:01:23
Boostの開発現場

実際にどこか1ヶ所にみんなが集まっているわけではないだろうけどね。

773 名前:デフォルトの名無しさん :2006/11/26(日) 01:45:04
正直More〜は立ち読みで十分な悪寒

774 名前:デフォルトの名無しさん :2006/11/26(日) 01:57:24
ちょっと質問。

hoge(aaa, "aaa"); を、HOGE(aaa) か HOGE("aaa") みたいに、
aaa を1度しか書かなくていいようにマクロ化したいんだけど、無理かな?

文字列連結とか # 連結マクロとか考えたけど思いつかず・・・


775 名前:デフォルトの名無しさん :2006/11/26(日) 01:58:58
>>774
#define HOGE(expr) hoge(expr, #expr)

これじゃ駄目なのか?
C++ 関係ないな。

776 名前:デフォルトの名無しさん :2006/11/26(日) 02:00:28
#define HOGE(aaa) hoge(aaa, #aaa)

777 名前:デフォルトの名無しさん :2006/11/26(日) 02:01:27
#define HOGE(x) hoge(x, #x)

それはこれで済む話か?

778 名前:デフォルトの名無しさん :2006/11/26(日) 02:05:07
774 の人気に嫉妬

779 名前:774 :2006/11/26(日) 02:09:45
a##b → ab のタイプの連結しか知らなかったです
ありがとうございました。

連結マクロでぐぐってもいいのが見つからなかったんですが、
これ何か名前ついていますか?


780 名前:デフォルトの名無しさん :2006/11/26(日) 02:21:31
>>779
# は連結じゃねーしマクロじゃない。文字列化演算子。

781 名前:デフォルトの名無しさん :2006/11/26(日) 02:25:06
みんなマクロが好きなんだね
そんなに好きならLispさんちの子になっていいんだよ

782 名前:デフォルトの名無しさん :2006/11/26(日) 02:29:18
>>774-781
この流れに和んだ

783 名前:774 :2006/11/26(日) 02:37:43
>>780
ありがとうございます、文字列化演算子#、トークン連結演算子## が見つかりました。
デバッグなどで、列挙体を表示するのに使いたかったのです。


#define HOGE(word) E_##word

enum TYPE {
 HOGE(aaa),
 HOGE(bbb),
};

#undef HOGE

#define HOGE(word) #word

static char* COMMAND[] =
{
 HOGE(aaa),
 HOGE(bbb),
};

こんな感じにやっといて、
HOGE(aaa) HOGE(bbb) の部分だけ別ファイルにして #include で取り込めばいいかなーと。
そうすれば、COMMAND[E_aaa] で "aaa" が取り出せるって寸法です。

後はスクリプトなどで、コマンド ⇔ ID の変換とか。


784 名前:デフォルトの名無しさん :2006/11/26(日) 02:41:44
>>783
常套手段だ。

× static char* COMMAND[] =
○ static char const* cons COMMAND[] =

785 名前:デフォルトの名無しさん :2006/11/26(日) 02:42:31
○ static char const* const COMMAND[] =

786 名前:デフォルトの名無しさん :2006/11/26(日) 09:02:28
bootsの話はもう終わり?

787 名前:デフォルトの名無しさん :2006/11/26(日) 09:16:02
始まってすらいない。

788 名前:デフォルトの名無しさん :2006/11/26(日) 09:30:17
Effective C++
More Effective C++
Effective STL
は必ず読むべきです。読みやすいですし。

以上を読んで理解ししたら、
C++ Coding Standards
を手元に置いといて眺めてください。
余力があれば、
More Exceptional C++
Exceptional C++ Style
C++ Templates
この他は読む必要ない。



789 名前:デフォルトの名無しさん :2006/11/26(日) 10:26:19
原典スルーかよ?

790 名前:デフォルトの名無しさん :2006/11/26(日) 10:40:35
原典読みやすいよね。

791 名前:デフォルトの名無しさん :2006/11/26(日) 10:54:32
ハムラビ原点?

792 名前:788 :2006/11/26(日) 11:39:34
>>789
あ、D&Eを入れ忘れた。

793 名前:デフォルトの名無しさん :2006/11/26(日) 17:27:19
More Effective C++の翻訳版って誤訳あるの?
できれば日本語のほうがいいのですが、どうでしょう

794 名前:デフォルトの名無しさん :2006/11/26(日) 20:01:44
誤訳というかわかりにくい

795 名前:デフォルトの名無しさん :2006/11/26(日) 22:22:43
最近C++を勉強を始めた者ですが、
クラスのインライン関数についての質問なんです。
関数を頻繁に使う場合はクラスの定義の中に書くって参考書には書いてたんですけど、
実際どれくらいの頻度ならインラインを使うべきなんでしょうか?

また、頻繁に使うけど中でのループする処理が多い場合はインラインを使わない方がいいんでしょうか?

初歩的質問だとは思いますが、よろしくお願いします。

796 名前:デフォルトの名無しさん :2006/11/26(日) 22:31:47
>795
今は「気にするな」ということらしい。
inline指定の有無にかかわらず、コンパイラは勝手にインラインにしたりしなかったりするんだって。

797 名前:デフォルトの名無しさん :2006/11/26(日) 22:32:55
>>795
クラス定義外に書いても inline とつけた定義をヘッダに置けば
インライン関数にできる。分けて書いたほうがクラス定義がすっきりする。

インラインにしたい場合はヘッダに実装を晒さないといけないんで、
実測に基づいて効果があると確認できたときだけにしておいたほうがいいと思う。

798 名前:デフォルトの名無しさん :2006/11/26(日) 22:38:09
予測に基づくチューニングは無意味だから、
気にしないことを勧める。

VC7以降は「リンク時コード生成」というのがあって、
パフォーマンス向上のためのインライン宣言が無駄になる。
gccにはまだないけど、まあそのうちはいるでしょ。

むしろ、見易さを優先したほうがいい。
たとえば、メンバ変数の単純なgetterをインラインで書いておくと、
.h/.cppを往復する回数が減る。

799 名前:デフォルトの名無しさん :2006/11/26(日) 23:05:46
なるほど。勝手に判断してくれるんですか。
ありがとうございました!
勉強になりました!!

800 名前:デフォルトの名無しさん :2006/11/26(日) 23:07:40
単純なアクセサを実装見なければ判らないように書くほうがどうかしているとは思うが。

801 名前:デフォルトの名無しさん :2006/11/26(日) 23:19:12
>>798
実装が単純な getter であっても、インターフェースと混ぜてしまうのには
抵抗があるな。その getter が単純な変数の読み取りであることをユーザーに
認識させてしまって良いのかどうかによって、答えは変わるだろう。

802 名前:デフォルトの名無しさん :2006/11/26(日) 23:21:26
どうせテンプレートを使ったときには丸見えにするしかないから俺はあまり深く考えていない。

803 名前:デフォルトの名無しさん :2006/11/27(月) 02:45:48
上に同じ。

804 名前:デフォルトの名無しさん :2006/11/27(月) 04:30:49
整数を文字列変換&結合についての質問です。
整数:a = 10; b = 20; を 文字列に変えて結合したいんですけど、
このときに、文字列はstring型で扱いたいんですが、どうしたらいいでしょうか?
char型は使いません。

805 名前:デフォルトの名無しさん :2006/11/27(月) 04:33:00
std::stringstream

806 名前:デフォルトの名無しさん :2006/11/27(月) 04:33:25
boost::lexical_cast

807 名前:デフォルトの名無しさん :2006/11/27(月) 04:33:25
>>804
toString してたせばいいんじゃないんだっけ?

808 名前:デフォルトの名無しさん :2006/11/27(月) 04:55:28
printfのようなものを望むならば、
boost::formatがまさにそれだが。

809 名前:デフォルトの名無しさん :2006/11/27(月) 05:05:02
>>805-808
ありがとうございます。
いくつもあるとは・・・ちょっと驚きですw

810 名前:デフォルトの名無しさん :2006/11/27(月) 05:25:01
toString()はC++じゃないぞww

811 名前:デフォルトの名無しさん :2006/11/27(月) 06:25:59
boostも標準C++じゃない。
stringstreamやsprintfは標準だけどな。

812 名前:デフォルトの名無しさん :2006/11/27(月) 06:33:15
正しいC++規格で書かれたものが標準ではないとはこれいかに?

813 名前:デフォルトの名無しさん :2006/11/27(月) 06:50:58
空気嫁

814 名前:デフォルトの名無しさん :2006/11/27(月) 06:57:50
>>812
俺様ライブラリに
toString()というのを正しいC++規格で書けば良い
というお話ですよね?

815 名前:デフォルトの名無しさん :2006/11/27(月) 08:47:13
そして彼は私にあのときは標準C++規格に採用されたライブラリではないと
いいたかったのだったといったのだったがそれがすでに手遅れだったので
だっふんだをしたかったのだったがそれも手遅れだったのだったのだっふんだ
と言ったのだった

816 名前:デフォルトの名無しさん :2006/11/27(月) 14:58:10
        ,.-─ ─-、─-、
      , イ)ィ -─ ──- 、ミヽ
      ノ /,.-‐'"´ `ヾj ii /  Λ
    ,イ// ^ヽj(二フ'"´ ̄`ヾ、ノイ{
   ノ/,/ミ三ニヲ´        ゙、ノi!
  {V /ミ三二,イ , -─        Yソ
  レ'/三二彡イ  .:ィこラ   ;:こラ  j{
  V;;;::. ;ヲヾ!V    ー '′ i ー ' ソ
   Vニミ( 入 、      r  j  ,′
   ヾミ、`ゝ  ` ー--‐'ゞニ<‐-イ
     ヽ ヽ     -''ニニ‐  /
        |  `、     ⌒  ,/
       |    > ---- r‐'´
      ヽ_         |
         ヽ _ _ 」

     ウプレカス [ uBLAS ]
  ( 西暦一世紀前半 〜 没年不明 )


817 名前:デフォルトの名無しさん :2006/11/27(月) 18:10:07
質問いたします.
クリップボード内のデータの履歴を取り,再利用するものを想定しています.
テキストだけでなく,画像やリンクなどを含めたデータをクリップボードから取り出し,
保存するにはどのようにしたらよいでしょうか?

818 名前:デフォルトの名無しさん :2006/11/27(月) 18:17:46
>>817
OLE使え。IDataObjectを取り出してそれを保存するんだ。
Windowsのスクラップオブジェクトもたぶんそうしている。
スレ違いだから、詳しくはよそ行け。

819 名前:デフォルトの名無しさん :2006/11/27(月) 18:28:55
OLEってなんですか?
WindowsってX-Windowsのことですか?

820 名前:デフォルトの名無しさん :2006/11/27(月) 18:33:13
おいしいお菓子のことですよ。ひとつあげましょうか。

821 名前:デフォルトの名無しさん :2006/11/27(月) 18:38:38
次のC++規格はいつ決まるんですか?

822 名前:デフォルトの名無しさん :2006/11/27(月) 18:40:52
       _,,-'' ̄ ̄`-、
       /        \
      ,/           \
     /   ―  ―     ヽ
    lヽ  - 、 ! , _     |
    |r――-、_⊥ ,――'-、 |,-,
    |::::::::::::::::/ |ヽ:::::::::::::::|-|'イ!|
     ト、__,,/:  |: `、__,,/ ,|ソ/
     .|    、_ j| _,、     ,|-'
     |   /lll||||||||||l`、   ,|
     `i ,|||' ̄= ̄`|||、 / ト、
     「|ヽ|ll||||||||||||||||| /i |::::\
    /:::::\`!!||||||||||||!!'   |::::::::\
   /::::::::::::::`ー-、.._ i     |::::::::::::::\
  /:::::::::::::::::::::::::::::::::::`ー-、. |::::::::::

 ハンツキー・ロムッテロ[Handski Romtteroo]
      (1955〜 アメリカ)

823 名前:デフォルトの名無しさん :2006/11/27(月) 18:56:02
ようハンツ、おまえももう50代か。

824 名前:デフォルトの名無しさん :2006/11/27(月) 22:55:25
ものすごく単純な質問なんですが
doubleより大きな実数値を表せる形ってありますか?

825 名前:デフォルトの名無しさん :2006/11/27(月) 22:58:45
long double >= double > float

long double == double か long double > double かは環境依存

826 名前:デフォルトの名無しさん :2006/11/27(月) 23:06:18
絶対値が大きいって意味?
それとも有効桁数が多いって意味?

827 名前:824 :2006/11/27(月) 23:22:22
返答ありがとうございます。
>>825
xp home,borland 5.5無料版です。この場合long double の方がよくなるんでしょうか?
>>826
有効桁数です。100行100列くらいの逆行列を陰解法によって解いてて
それで有効桁数がネックとなり、逆行列の精度がすこぶる悪いんです…

828 名前:デフォルトの名無しさん :2006/11/27(月) 23:28:28
>>827
100x100程度の逆行列求めるのにdoubleで足りなくなるのは演算の仕方が悪いだけ。

829 名前:デフォルトの名無しさん :2006/11/27(月) 23:30:43
>>827
ちゃんとピボット選択してるのか。

830 名前:デフォルトの名無しさん :2006/11/27(月) 23:42:17
>>828
すみません。初心者なもんで…本当にシンプルなプログラムで
何も工夫してないので計算の仕方は当然悪いっちゃ悪いですw
>>829
知りませんでした…ピボット??なんじゃそりゃ??ってことで今大至急ググった結果
http://www.isc.meiji.ac.jp/~re00108/ch6/index.html
なるホームページが出てきました。
これを読んでもう一度プログラムを書き直して見ます!

831 名前:デフォルトの名無しさん :2006/11/28(火) 01:02:36
なんでublasやLAPACK使わないの?

832 名前:デフォルトの名無しさん :2006/11/28(火) 01:03:43
勉強してるんだろ。

833 名前:デフォルトの名無しさん :2006/11/28(火) 01:26:58
ええことや!

834 名前:デフォルトの名無しさん :2006/11/28(火) 06:38:55
LAPACK の逆行列ルーチンって、
ついでに行列式を求めてくれないんだよな。
いまいち使えん。

835 名前:デフォルトの名無しさん :2006/11/29(水) 01:18:13
std::stream 系に、ビット列?をそのまま渡す方法はないでしょうか?
例えば int 型を渡すと、4バイトそのままの形で流し込むイメージです。
出力先はファイルだったりメモリだったり色々です。


836 名前:デフォルトの名無しさん :2006/11/29(水) 01:20:57
>>835
operator<<を自分で定義すればいいだろ。

但しoperator<<(std::ostream&, int)は既に定義されているので、
ラッパークラスを作る必要はあるだろうが。

837 名前:デフォルトの名無しさん :2006/11/29(水) 01:30:33
その通りなのですが、もし用意されているのなら、
用意されているものを使った方がいいと思ったのです。
うーん、諦めて作りますか・・・ありがとうございます。


838 名前:デフォルトの名無しさん :2006/11/29(水) 01:31:49
std::write()なんてのもあるけど、これは個別に呼び出さないと
いけないけどな。

839 名前:デフォルトの名無しさん :2006/11/29(水) 01:33:45
write(reinterpret_cast<char*>&i, sizeof(i));

840 名前:デフォルトの名無しさん :2006/11/29(水) 02:41:23
2つのクラス間でstd::map<string, A *>のようなmapコンテナを渡す時は

std::map<string, A *> &get(){}
void set(std::map<string, A *> &m){}

こんな受け渡しでOKなのでしょうか?何故かAのポインタだけ
あってAの中身がないのですが困った助けて

841 名前:デフォルトの名無しさん :2006/11/29(水) 03:16:18
>>840
boost::ptr_map使えよ

842 名前:デフォルトの名無しさん :2006/11/29(水) 03:17:22
この関数のループ内で宣言したhoge *hのスコープはループが終了するまで会ってるのでしょうか?
FuncA(){
  for(...){
hoge *h;
....
}


もし、このhogeをループが終わってからもポインタアドレスとその中身を保存したい場合は
オブジェクトをコピーしないとダメなのでしょうか?

843 名前:デフォルトの名無しさん :2006/11/29(水) 03:18:32
>>842
アドレスをコピーしても意味がない。それはローカル変数だから
スコープを抜けると同時に消滅する。

中身はコピーしてとっておける。

844 名前:デフォルトの名無しさん :2006/11/29(水) 03:33:16
>>842
C++始めたばかりで解らないのですが
JavaみたいにClose()みたいなAPを呼んでコピーすれば
いいのでしょうか?
よろしければ、上の問題でコピーをどのように行えばいいのか
議事コード的なものを示していただけないでしょうか?

845 名前:デフォルトの名無しさん :2006/11/29(水) 04:10:01
>>844
C++にはClone()なんて気の利いた関数は用意されていないから、
自分で代入演算子やコピーコンストラクタを定義しなければならない。

もしクラスhogeにポインタを含んでいないのなら、デフォルトの代入演算子
やらコピーコンストラクタで十分。

そしてFuncA()の戻り値をhogeにすればよい。

846 名前:デフォルトの名無しさん :2006/11/29(水) 04:24:22
>>840
気になったのでやってみた。特に問題はないようだが
struct A {
void print() const {
std::cout << "A" << std::endl;
}
A(int j = 0) : i(j) {}
private:
const int i;
};

class T1 {
std::map<std::string, A*> m1;
public:
std::map<std::string, A*>& get() { return m1; }
void set(std::map<std::string, A*>& m) { m1 = m; }
};

int main()
{
T1 x;
std::map<std::string, A*> m, m2;
m["abc"] = new A(1); m["def"] = new A(2);
x.set(m);
m2 = x.get();
m2["abc"]->print(); m2["def"]->print();
}

847 名前:デフォルトの名無しさん :2006/11/29(水) 04:26:56
訂正
void print() const {
std::cout << "A" << i << std::endl;
}

848 名前:デフォルトの名無しさん :2006/11/29(水) 09:05:03
>>842
ポインタは、

FuncA(){
hoge *h;
  for(...){
....
}


でいいけど、その指している先をどうすればいいかはそのプログラムだけでは分からない。

849 名前:デフォルトの名無しさん :2006/11/29(水) 10:41:16
>>846
大丈夫かどうかはnewしたAの寿命次第だな。
多分>>840は、コンテナをコピーした後Aがdeleteされたんだろ。

850 名前:デフォルトの名無しさん :2006/11/29(水) 10:56:43
Perl、Ruby等でCGIプログラミングしか経験がないんですが、C++を勉強したい場合、
どのような本がお薦めでしょうか?一応「独習C++」は注文しましたが…。

851 名前:デフォルトの名無しさん :2006/11/29(水) 10:58:34
>>850 >>3-4

852 名前:デフォルトの名無しさん :2006/11/29(水) 11:06:19
>>3-4の書籍は、「初心者向けじゃない」という評価が多かったのですが、
それでも>>3-4を読むべきですか?

853 名前:デフォルトの名無しさん :2006/11/29(水) 12:14:31
>>852
プログラミング言語C++第3版

854 名前:デフォルトの名無しさん :2006/11/29(水) 13:12:16
まずCをやりなよ。

855 名前:デフォルトの名無しさん :2006/11/29(水) 14:48:50
>>854
独習C++を読んで、それに気付きました。独習C++って、Cを理解していることを前提に書かれていますね…。
CをやらずにC++を勉強することが出来る…というか基本的な部分も記載されているC++の本ってないでしょうか…。

「C++ ⊃ C」らしいですから、Cを勉強するってことがそのままC++の基本を勉強するってことなんでしょうけど…。


856 名前:デフォルトの名無しさん :2006/11/29(水) 14:59:25
>>855
俺Cやらずに独習C++でC++から入ったよ。
難しい事なんて何も無い。

857 名前:デフォルトの名無しさん :2006/11/29(水) 15:07:35
「型」や基本的な構造も、PerlやRubyしか触ったこと無いので曖昧です。

int main()
{

}

の「int」が何を意味しているのかも分かりませんし、

void hogehoge()
{

}

の「void」の意味も曖昧です。hogehoge(void)とか。<iostream.h>の「.h」の意味も分かりませんし。
なのでやはりCの基本も記載している本が必要だと思います。
とりあえず独習Cも注文してみました。少し慣れてきたら、プログラミング言語Cとプログラミング言語C++も手元に置くことにします。

Cの基本からC++を学べる本がありましたらご教示ください…。

858 名前:デフォルトの名無しさん :2006/11/29(水) 15:08:07
>>855
他言語で何か作れるならプログラミングの素養だけはあるって事だ。
あとは言語の仕様書(っていうとC++の場合悲鳴が上がるかもしれんくらいでかいけど)と
首っ引きで習うより慣れろでやっちまうのも手だよ。(>>853の出した書籍がそう)


859 名前:デフォルトの名無しさん :2006/11/29(水) 15:09:24
Ruby知ってて型がわからんってのは無しにしようよ。


860 名前:デフォルトの名無しさん :2006/11/29(水) 15:14:37
>>858
分かりました。やってみます

>>859
「型」という概念が分からないのではなくて、intやdouble、char、longなど、
出てきたことのないものを完全には把握してないということです。
各型(クラス?)の、Rubyでいうところのクラスメソッドのようなものも知りませんし…。

861 名前:デフォルトの名無しさん :2006/11/29(水) 15:15:54
とりあえず、皆さん親切にお答えくださってありがとうございました。
しつこくレスして申し訳有りませんでした。

独習C/C++とプログラミング言語C/C++でやってみます。

862 名前:デフォルトの名無しさん :2006/11/29(水) 15:28:08
過去何度も言われてることだけど、プログラミング言語Cはいまや古文書の類で、
決して初心者向きの入門書とかではないぞ。
もっと噛み砕いた本はいくらでもあるし、その本読んでからC++へ行こうなんて
考えるくらいなら、はじめからストラップのハゲのC++第三版読んでも変わらない。
難易度的には大差ないし、内容としては包含されている。

独習〜は正直好みも分かれると思う。
入門書として悪い物ではないかもしれないが、読み終わってみて
自分の中に残っているものの少なさに愕然としたりもする。

アンチも多いが柴田〜の本を立ち読みしてみて、合いそうならそっちを選ぶのも有りかもしれん。
中の人がとんでもなくイタい人なんで、その辺を気にしだすとまったく読む気がなくなる本でもあるが、
入門書の類には素直な良著も多い。

863 名前:デフォルトの名無しさん :2006/11/29(水) 15:32:40
「作って分るCプログラミング」がいいよ

864 名前:デフォルトの名無しさん :2006/11/29(水) 15:43:48
>>861
参考までに、
http://72.14.235.104/search?q=cache:Wf0hnrvG1J4J:www.ascii.co.jp/bookmart/pdf/47561/475611895X.pdf+C%2B%2B%E3%81%AE%E5%89%8D%E3%81%ABC&hl=ja&gl=jp&ct=clnk&cd=3&lr=lang_ja&client=firefox
原典では直接C++の学習を始めることを進めている。
>C++の前に C を学習する必要があるかどうかについては、未だに議論が分かれるところ
>だが、私は C++に直接行くのがベストだと確信している。
>C++が直接サポートしている高水準のテクニッ
>クの一部を知ったあとなら、C が高水準機能を持たないために必要になってくる C の難し
>い部分も学習しやすくなるだろう。

あとは、こことか
http://www.asahi-net.or.jp/~yf8k-kbys/c0.html
http://www.asahi-net.or.jp/~yf8k-kbys/newcpp0.html
入門はこのへんのページをさらっと回して、
>>2-3に入って、先人のソースを読み始めるのが上達の近道。

C++の前にCをやれと言う人の多くは
自分がCをもともと知っていたという主観が多分に入ってるからそんな気にすることもないと思う。
俺もCから入ったが、これからの人はむしろJavaを先にやってからC++に入ったほうが
パラダイム循環としてはわかりやすいと思うし。
C++から始めてなんら問題ないと思うよ。独習C++では読者の前提条件が違うってだけ。

865 名前:デフォルトの名無しさん :2006/11/29(水) 15:51:06
みんな親切だな

866 名前:デフォルトの名無しさん :2006/11/29(水) 15:52:40
>>856 亀レスだが
さすがにそれは無いと思う……
他の書籍ならともかく、独習C++は独習C読んでることを前提として書かれてる。
1章(C++の概要)から、いきなり
 オブジェクト指向とは
 CとC++の相違点(ヘッダとか名前空間とかコンソール入出力とか)
2章・3章で、すぐにクラスの説明


まあ Perl の文法知ってればあんまり問題ないだろうけど。
あとは型をちゃんと使い分けるくらい?

867 名前:デフォルトの名無しさん :2006/11/29(水) 15:53:57
java厨が書いたC++コードは最悪だった
必然的にメモリ周りがおかしい。穴あけ過ぎ
最近は初めての言語がjavaってのが増えてるんだろうなー

868 名前:デフォルトの名無しさん :2006/11/29(水) 15:55:59
>>866
そうでもないよ。
分からない事は断片的に現れるくらいだし、それが出てきたとしても
数分ネットで検索するか考えるかすれば簡単に読み進めれるよ。
まぁCやらずにって言っても、ネットのC言語の資料を嫌と言うほど読み漁ってたからね。

869 名前:デフォルトの名無しさん :2006/11/29(水) 16:04:48
>>864
最近読んだなんかの本に、
「Javaはハード側の問題を隠しすぎ。やるならより低級のCとかからやるべき」
って書いてあった。
それはつまり、>>867が指摘してることなのかな


いや俺もプログラム初級者だからあんまわかんないけど。

870 名前:デフォルトの名無しさん :2006/11/29(水) 16:12:21
>C++の前にCをやれと言う人の多くは
>自分がCをもともと知っていたという主観が多分に入ってるからそんな気にすることもないと思う。

これはテンプレに入れてもいいくらいだと思う。
C++がCの「反省を踏まえた上での」スーパーセットだということを皆忘れすぎ。

Javaについては、こちらも「C++における諸々の問題点についての反省を踏まえた上での」言語なので、
ある意味退化言語に戻ってくる点については重々把握してもらっておかないと

>メモリ周りがおかしい。穴あけ過ぎ

には確実に陥るだろうなー。


そういう人にはC++/CLIとかC#って選択肢もあるとは思うけど。

871 名前:デフォルトの名無しさん :2006/11/29(水) 16:39:46
まぁあれだ、
Cの学習を始める前にアセンブリ言語やれって言われてた時代と状況は変わらんってことな。


872 名前:デフォルトの名無しさん :2006/11/29(水) 17:20:46
ぶっちゃけC++の基礎を学ぶ段階なら、本なんざいらん。
VC2005 Expressとか落として、ぐぐりながら思考錯誤で十分。
3ヶ月もあれば基礎は理解出来るだろ。

873 名前:デフォルトの名無しさん :2006/11/29(水) 17:26:28
また極論だな。3ヶ月間もPCの前でうだうだしてられる学生やニートならそれでもいいだろうが。
どの世界でもそうだが、自分がやって来た方法をそのまま押し付けることが教えることだと勘違いしてる奴多いよな。

874 名前:デフォルトの名無しさん :2006/11/29(水) 17:59:43
>>872
ARMでも読めば一週間もかからずに学べるのに、なんで三ヶ月もそんなことしなきゃならんの?

875 名前:初心者 :2006/11/29(水) 18:34:55
私は大体C++の教科書は3日で読み終わりました。
初心者にお勧めなのはVisualC++入門等でしょう。私レベルなら1日ほどで
読み終わりますが、不慣れなあなたたちでも1ヶ月もあれば読めると思います。
その後C++の最新のバージョンであるVisualC#入門等を読むことをおすすめします。


876 名前:デフォルトの名無しさん :2006/11/29(水) 18:42:29
C#はC++の最新ではない。別の言語だ。

877 名前:デフォルトの名無しさん :2006/11/29(水) 18:47:11
迷える子羊の方々
C#厨の言葉に惑わされてはいけません
彼らは破滅と絶望を分かち合うことを楽しんでいるのです

878 名前:デフォルトの名無しさん :2006/11/29(水) 19:00:54
C/C++なら入門サイトもたくさんあるし本を読むほどでもない

879 名前:デフォルトの名無しさん :2006/11/29(水) 19:37:20
「言語を何日でマスター出来た」なんて話で本当にマスター出来ていた試しがないんだが

880 名前:デフォルトの名無しさん :2006/11/29(水) 19:38:04
>>876
ほんとにわかっていらっしゃるでしょうか?C言語+アルファ=C++言語なようにC++言語+アルファがC#というのは
常識です。あえていえばC++にはStandaad Template LibraryというVisualBasicライクな開発補助ツールが
付属する程度でしょうか。また最近はC#の更に発展としてD言語というものも開発されており、
D++、D#と今後C++は発展していくことでしょう。

注:現在、私は公私ともに多忙を極め、スレを見ることが困難な状況です。
しかしその中でも何とか時間を作り、このスレに出向いて質問をしています。
そのような貴重な質問者に対し、1行レス、煽り、罵倒で返す愚か者がいるようですが
私のような質問者がいなければそもそもあなたたちの知識をひけらかす場が
存在しないことをよく認識し、身の程をわきまえるべきであります。
よって、私のような貴重な質問者に対し、見下した回答、儀礼を欠いた回答
(例:質問してくれてありがとうございました等のお礼がない、である調で答える、
様をつけない、w等の意味不明な言葉を発する)を禁止いたします。
ましてや自分の立場もわきまえず逆にお礼を強要したり、各人の目に触れやすくなるよう
多数のレスに同様の質問をしているのを「マルチポスト」呼ばわりするような輩は
当然加害対象として私のリストに載ることになります(賢い方は意味がおわかりでしょう)
この規則は2chの精神にものっとっており、強制的に施行されます。もし違反した場合には
2ch管理人への通報、加害届けの提出、プログラムのハッキング(私には
2ch専門のハッキング部隊と契約を結んでおり、銀行の口座のハッキングから
FBIのコンピュータのハッキングまでこなす例のあれと親密な関係です)等断固たる処置
を取らせていただきます。また、形式的にはちゃんとした回答であっても、知識不足のため
不正確な知識を回答することも禁止いたします。よく考え、よく調べ、正確な回答を
するように心がけましょう。なお、当方が質問に対し多少は役に立つと判断した場合は
それなりに評価するのでご安心下さい。なお、確認はこの啓蒙文を読んでいることを
前提としており、読んでいない、理解できない等のいいわけは一切通用しません。
また、有識ある諸君は今後自分の発言に対しこの啓蒙文をコピペすることが義務になります。

881 名前:デフォルトの名無しさん :2006/11/29(水) 19:43:21
スルー推奨

882 名前:デフォルトの名無しさん :2006/11/29(水) 20:00:31
>>879
そもそも何を持ってマスターしたと言っていいのか決めようが無い罠。

883 名前:デフォルトの名無しさん :2006/11/29(水) 20:07:57
>>882
きっと、本人が「俺様はもう完璧」と思った時点。
だからマスターしているというのは大抵あてにならない。

884 名前:デフォルトの名無しさん :2006/11/29(水) 20:12:27
>>883
そういうのって中二病の症状のひとつだろ。

身に覚えがあるから恥ずかしい。

885 名前:デフォルトの名無しさん :2006/11/29(水) 20:21:13
趣味でC++10年ほどやってて大抵の事は知ってるつもりだけど、マスターしてるとはとても言えない。
未だに初めて知る事が年に数回あるから困る。

886 名前:デフォルトの名無しさん :2006/11/29(水) 20:28:59
啓蒙だ義務だってのが今年の冬の中二病の特徴かね。

887 名前:デフォルトの名無しさん :2006/11/29(水) 20:32:22
>>885
それ才能無いよ。
死ねばいいのに。

888 名前:デフォルトの名無しさん :2006/11/29(水) 20:47:15
C++から初めてテンプレートの直前あたりでCやアセンブラに退化して
それが終わったらテンプレート行くのがいいんじゃね?

失敗しまくって無理やり覚えるならどんなルートでもいいんだろうけどな

889 名前:デフォルトの名無しさん :2006/11/29(水) 20:48:19
>>887
俺も才能ないにしても、仕事で10年ぐらい使ってても>>885でいってること分かるよ。
まあC++がどんどん変わってるってのもあるけどやっぱり奥の深い言語だ。

890 名前:デフォルトの名無しさん :2006/11/29(水) 20:54:36
ちゃんと仕様書読んでれば、度忘れすることはあっても「初めて知る」なんてことあり得ない。
仕様書読まないヒトなら、仕様の全貌が分からないのだから「大抵のことは知っている」なんて言えるわけがない。
よって>>885は嘘。

891 名前:デフォルトの名無しさん :2006/11/29(水) 20:58:35
それってどこまでをC++に含んでるかによるんじゃない?
C++の言語仕様だけならそりゃ数ヶ月触ってればほとんどわかるだろう。
だけどライブラリやらデザインパターンやらって使わなきゃ知らないままのものって
多いしね。ちょっとしたテクニックにしてもしかり。

892 名前:デフォルトの名無しさん :2006/11/29(水) 21:01:34
>>890
仕様書が分かればその言語を全て知ったことになるのかよw
激しく日曜大工プログラマだなw

893 名前:デフォルトの名無しさん :2006/11/29(水) 21:07:14
>>892
仕様書も読まないずに、単に経験が長いからってだけで
「大抵の事は知ってる」なんて言う奴がいるわけねーwってのが骨子だよ。


894 名前:デフォルトの名無しさん :2006/11/29(水) 21:08:26
>>891
それは同意だが、それって新知識が年に数回程度で済むかな。

895 名前:デフォルトの名無しさん :2006/11/29(水) 21:13:45
>>894
それなりに長いことやってたら実際に現場でばりばりコード書く時間は少なくなってくるからねぇ。
単に勉強不足になったともいうが。

896 名前:デフォルトの名無しさん :2006/11/29(水) 21:30:14
また仕様書か

897 名前:デフォルトの名無しさん :2006/11/29(水) 21:35:39
規格書

898 名前:デフォルトの名無しさん :2006/11/29(水) 22:15:24
>>890
templateをこんな風に使うとsingletonができるなんて驚き

899 名前:デフォルトの名無しさん :2006/11/29(水) 22:36:47
マスターする=コンパイラ書いた

900 名前:デフォルトの名無しさん :2006/11/29(水) 22:39:12
×コンパイラ書いた
○規格に完全に準拠したコンパイラ書いた

901 名前:デフォルトの名無しさん :2006/11/29(水) 22:41:42
>>899
惜しい
マスターする=禿げた

902 名前:デフォルトの名無しさん :2006/11/29(水) 22:42:41
>>898
templateをこんな風に使うとsingletonができるのは当然

903 名前:デフォルトの名無しさん :2006/11/29(水) 22:43:12
ゲーハー

904 名前:デフォルトの名無しさん :2006/11/29(水) 22:58:17
>>900
そのころにはC++1x位になっていると思う。

905 名前:デフォルトの名無しさん :2006/11/29(水) 23:04:55
寧ろ、 『C--』 を作成

906 名前:デフォルトの名無しさん :2006/11/29(水) 23:07:42
wchar_tの配列を初期化するときは
str = L"string";
とLをつければいいみたいですが,単なる文字のときはどうすればいいですか?
wchar_t a = 'a';
wchar_t a = L'a';
どっちもコンパイルは通るみたいですが・・・

907 名前:デフォルトの名無しさん :2006/11/29(水) 23:08:55
>>906
L'a'が正しいです。
'a'は暗黙の変換が働いているだけ。たぶん'あ'などはうまくいかないでしょう。

908 名前:デフォルトの名無しさん :2006/11/29(水) 23:15:01
規格に完全に準拠したコンパイラ書けても
規格書を完全に暗記してても
変態テンプレート書けるとは限らん罠

909 名前:デフォルトの名無しさん :2006/11/29(水) 23:19:25
自分のしたいことが大体コーディングできて、
人が書いたものが全て理解できれば(難読化されてるものを除く)
「マスターした」と言ってもいいような気がするが・・・

910 名前:デフォルトの名無しさん :2006/11/29(水) 23:20:49
>>909
もしそうなら,マスターなんて単語いらない

911 名前:デフォルトの名無しさん :2006/11/29(水) 23:23:35
“マスター”だと「熟練した」以外にも「支配する」とか
「飼い馴らす」とかいうニュアンスがあるからねぇw

912 名前:デフォルトの名無しさん :2006/11/29(水) 23:32:20
>>909
そっから先の「どれ程のものを書けるか」ってのは、
特定の言語をマスターするとかの話ではなくて
プログラミングの才能みたいなものだからなぁ・・・


913 名前:デフォルトの名無しさん :2006/11/29(水) 23:52:45
C++規格の標準化の最前線で名が知れればマスターじゃないか。
フォースとか使えるようになるぜきっと。

914 名前:デフォルトの名無しさん :2006/11/30(木) 00:04:29
そういやヨーダも毛がないよな

915 名前:デフォルトの名無しさん :2006/11/30(木) 00:25:47
マスター禿

916 名前:デフォルトの名無しさん :2006/11/30(木) 03:06:14
無能はこういう、プログラミングの外側の
俺様定義や言葉尻に関するディスカッションになると元気だよね。
敷居が低くて、各人のレベルが曖昧にしか見えてこないテーマには
すぐ飛びつくからわかりやすいw

917 名前:デフォルトの名無しさん :2006/11/30(木) 03:53:34
マスター アジアは何をマスターしたのだろうか

918 名前:デフォルトの名無しさん :2006/11/30(木) 04:00:51
そりゃ文脈から言ってアジアをマスターしたんだろう。

919 名前:デフォルトの名無しさん :2006/11/30(木) 04:34:48
マスターベーションマスター

920 名前:デフォルトの名無しさん :2006/11/30(木) 04:44:53
最近かそってたからちょうどいい

921 名前:デフォルトの名無しさん :2006/11/30(木) 04:45:58
自慰はmasturbationだぞ。

922 名前:デフォルトの名無しさん :2006/11/30(木) 06:38:10
確かにここはスレタイにあるとおりC++相談室だ。
C#厨は最初からお呼びでないことをうっかり忘れていた。

923 名前:デフォルトの名無しさん :2006/11/30(木) 06:53:44
>>922
うっかりじゃなくてしっかりだろ

924 名前:デフォルトの名無しさん :2006/11/30(木) 07:19:33
>>923
しっかりじゃなくてちゃっかりだろ

925 名前:デフォルトの名無しさん :2006/11/30(木) 08:32:57
語尾に -tion がついていると全部同じ言葉に聞こえる
ヲナニーのやり過ぎだ(;´Д`)ハァハァ

926 名前:デフォルトの名無しさん :2006/11/30(木) 08:50:18
ステーションハァハァ

927 名前:デフォルトの名無しさん :2006/11/30(木) 08:51:16
C++の規格書を完全に理解するなんて不可能。
今でもマイナー/字句修正提案が行われているくらいなのに。

http://www.open-std.org/jtc1/sc22/wg21/のpaper読んだことあるヤツなら、
>>891なんてこと言えるわけがない。

928 名前:デフォルトの名無しさん :2006/11/30(木) 08:54:02
だから定義が曖昧な言葉に突っかかるなと

929 名前:デフォルトの名無しさん :2006/11/30(木) 09:12:44
「ほとんど」と「完全に」には10〜20%くらいの開きがあるからね。

930 名前:デフォルトの名無しさん :2006/11/30(木) 11:38:07
よくいるよな。こういう曖昧な言葉につっかかって「俺は偉いんだぞ」とでも
言いたそうなやつ。見てて痛い。

931 名前:デフォルトの名無しさん :2006/11/30(木) 12:12:33
>>927
「完全」の意味がよくわからないけど、
規格書を読んで理解してる人がいるからこそ、
修正の提案がなされたり議論されたりされてるんじゃない?

932 名前:デフォルトの名無しさん :2006/11/30(木) 12:29:32
>>931
じゃない。

933 名前:デフォルトの名無しさん :2006/11/30(木) 12:33:30
じゃあこの言い回し修正汁とか言いだす人は、
「読んでないけど捏造に決まってる!修正汁!謝罪と賠償を」とか
「読んでも全く意味がわからないけどこういう意味に決まってる!修正しろ!」とか
言ってるわけか。病んでるな。

934 名前:デフォルトの名無しさん :2006/11/30(木) 12:44:43
>>933
そっくりそのまま>>933にお返しする
特に「読んでも全く(ry」

935 名前:デフォルトの名無しさん :2006/11/30(木) 12:49:25
>881
私にはスルー力がありません><

936 名前:デフォルトの名無しさん :2006/11/30(木) 12:52:33
ていうかさ、正直規格なんてある程度分かってれば目的のものは作れればそれが一番だと思うよ。
全部理解しないと使えないってのはむしろ言語としての欠陥かと。

937 名前:デフォルトの名無しさん :2006/11/30(木) 12:58:18
>>936
はぁ?お前が不勉強なだけだろうが。規格ってのは最低限度の知識なんだよ。
趣味でHelloWarld(笑)やってるぐらいならいいが>>927も読んでないような奴は
プログラマと自称するべきじゃないな。

938 名前:デフォルトの名無しさん :2006/11/30(木) 13:01:52
規格書が手元にあれば全部覚えてる必要を感じない。
もちろん参照頻度は少しずつ減っていくけどね。



939 名前:デフォルトの名無しさん :2006/11/30(木) 13:02:54
イタイwww

940 名前:デフォルトの名無しさん :2006/11/30(木) 13:07:36
痛い馬鹿がいると聞いて来ました。

   +   +
     ∧_∧  +
    (0゚・∀・)   ワクワクテカテカ
+.   (0゚∪ ∪ +
    と__)__)

941 名前:デフォルトの名無しさん :2006/11/30(木) 13:13:52
無能はこういう、プログラミングの外側の
俺様定義や言葉尻に関するディスカッションになると元気だよね。
敷居が低くて、各人のレベルが曖昧にしか見えてこないテーマには
すぐ飛びつくからわかりやすいw


942 名前:デフォルトの名無しさん :2006/11/30(木) 13:18:01
と俄然ハッスルする>>941であった

943 名前:デフォルトの名無しさん :2006/11/30(木) 13:25:21
牛乳飲みながらちんすこう旨いぞ。

944 名前:デフォルトの名無しさん :2006/11/30(木) 13:27:56
>>941
燃料投入乙

945 名前:デフォルトの名無しさん :2006/11/30(木) 15:28:32
>>943
ちんこすうに見えた。
ここの人たちは変なことばっかり言うって先入観でもあるんかな。
ちんすこうはうまいね。
味の想像は付くけど今度牛乳と一緒に試してみる。

946 名前:デフォルトの名無しさん :2006/11/30(木) 15:37:12
ちんすこう美味いか?砂糖かけたカンパンにしか見えない。

947 名前:デフォルトの名無しさん :2006/11/30(木) 16:05:15
おいおい、それ言ったらサトウキビは砂糖水でふやけた竹だぞ

948 名前:デフォルトの名無しさん :2006/11/30(木) 16:32:52
だいたい砂糖なんて甘い粉みたいなもんじゃん

949 名前:デフォルトの名無しさん :2006/11/30(木) 17:15:22
さーたーあんだぎー

950 名前:デフォルトの名無しさん :2006/11/30(木) 19:16:19
ろくに勉強して無い大卒が
「プログラミングなんていくら上手くても無駄、言語ヲタ脂肪wwww」
とかやたら必死になって力説する理由が分かるスレですね


951 名前:デフォルトの名無しさん :2006/11/30(木) 19:18:23
>>950
プログラミングなんていくら上手くても無駄、言語ヲタ脂肪wwww

952 名前:デフォルトの名無しさん :2006/11/30(木) 19:55:27
なんで急に大卒?

953 名前:デフォルトの名無しさん :2006/11/30(木) 20:44:38
>>952
「大学で数学ちゃんと習ってデスマーチと縁の無い職場に行くのが勝ち組」
が根拠らしい。

954 名前:デフォルトの名無しさん :2006/11/30(木) 20:49:00
VC2005のiostreamってスレッドセーフなの?

955 名前:デフォルトの名無しさん :2006/11/30(木) 21:13:38
>>954
スレ違い。だけど誘導先が見当たらないんで答えてしまう。

昔はシングルスレッド用とマルチスレッド用とをオプションで選択できたけど、
今はマルチスレッド用しかなくなってる。いちおうマルチスレッドに対応したもの
ってことになってるから、ほぼ問題ないと思われる。

956 名前:デフォルトの名無しさん :2006/11/30(木) 21:20:12
なるほど。さんきゅー。

957 名前:デフォルトの名無しさん :2006/11/30(木) 21:40:30
結局プログラミングなんていくら上手くても無駄なんだよ。
言語オタクはマジキモいから早く死んでね。
でも家畜さんが居なくなると困るから、奴隷のように働くしか道が残ってないかわいそうな人は死なないでね。

958 名前:デフォルトの名無しさん :2006/11/30(木) 21:45:03
これはいいツンデレ

959 名前:デフォルトの名無しさん :2006/11/30(木) 21:58:51
プログラマってきもいんだよwwww社会の屑wwwww
BoostだのSTLだの偉そうにしゃべりやがってオタクがwwwww
まあたまにはよくこんなコードかけるなあって感心することもあるけどさ
正直難しいよね。
俺なんかHello Worldがせいっぱいでさ・・・
できたらiostreamの使い方を教えていただけませんでしょうか先輩方。

960 名前:デフォルトの名無しさん :2006/11/30(木) 22:02:16
だが断る

961 名前:デフォルトの名無しさん :2006/11/30(木) 22:59:03
iostreamっていっても漠然と言われても広いから困る。

962 名前:デフォルトの名無しさん :2006/11/30(木) 23:57:53
C言語の関数を呼び出したプログラムを
libにしたのですが、このlibを呼び出そうとすると
mallocが見つかりませんなど、Cの関数の呼び出し部分が
参照できないようです。
C++のプログラムの中にCの関数を呼び出す記述が含まれる場合に
このソースをlibにする場合には他に何をすればよいのでしょうか?

963 名前:デフォルトの名無しさん :2006/12/01(金) 00:01:37
>>962
extern "C" が抜けてるんじゃない?
コンパイラ付属の stdlib.h を使えば malloc() では問題ないはずなんだが。

964 名前:デフォルトの名無しさん :2006/12/01(金) 00:41:03
>>963
externCは

char *hoge = malloc()ってな感じで使ってる場所でexternすればいいの?

組み込み系でなんかライブラリ標準じゃないのがちらほら.....

965 名前:デフォルトの名無しさん :2006/12/01(金) 00:51:49
名前マングリングを発動させたくない関数にextern "C"を使う。

966 名前:デフォルトの名無しさん :2006/12/01(金) 01:11:05
前から思ってたんだが、マングリングって響きがいやらしい。

967 名前:デフォルトの名無しさん :2006/12/01(金) 01:16:37
マングリ返しングリラ

968 名前:デフォルトの名無しさん :2006/12/01(金) 01:18:17
>>966
そうなんだよね。知っている人同士の会話なら問題ないんだけど、
職場で使うと変に誤解されそうで口にできない。
まあ使う機会なんてほとんどないんだけど。

969 名前:デフォルトの名無しさん :2006/12/01(金) 01:26:04
>>964 宣言に付けるんだよ。

970 名前:デフォルトの名無しさん :2006/12/01(金) 01:41:07
返り値とかも、周りから聞いたら相当危ない

971 名前:デフォルトの名無しさん :2006/12/01(金) 01:44:01
>>970
たしかに、音だけ聞いたら分からんな。

あと、プロセスを殺すとか、死んでとか。
つい電車の中で同僚と話してしまったことがある。

972 名前:デフォルトの名無しさん :2006/12/01(金) 01:46:51
こうですか?
>>971「で、そしたら(プロセスを)殺して(kill関数)、返り値が無ければ(ゼロであれば)、成功だな」

973 名前:デフォルトの名無しさん :2006/12/01(金) 02:01:34
プロセス周りだと親とか子とかゾンビとか出てきて、とっても危険な雰囲気。

974 名前:デフォルトの名無しさん :2006/12/01(金) 02:31:59
iostreamはまた別のメンドクサさがあってなあ・・

975 名前:デフォルトの名無しさん :2006/12/01(金) 06:25:55
fstreamでファイル操作する時、ファイルサイズ取得する方法ってありますかね?
Cの標準関数の場合は、ファイルの終わりにSEEKして位置情報取得すればいいんですけど。
fstream::size()みたいなメソッドがあれば一番なんですけどねぇ…

976 名前:デフォルトの名無しさん :2006/12/01(金) 06:35:54
fstreamでもやっぱり
ファイルの終わりにseekして位置情報を取得する

977 名前:デフォルトの名無しさん :2006/12/01(金) 08:17:20
seekp, seekg

978 名前:デフォルトの名無しさん :2006/12/01(金) 08:21:06
>>976
でもなんでC/C++の場合ってことごとくそれ系の関数/メソッドが無いんでしょうか?
何か、予め実装しておくと不都合な事でもあるんでしょうかねぇ…
io.hには_filelength()ってのがありましたけど…

979 名前:デフォルトの名無しさん :2006/12/01(金) 08:32:20
標準C/C++では入出力に関して、だいぶ非力な環境も想定していたと思う。
バイナリファイルをバイト単位で管理しない(できない)環境とかね。
(バイナリファイルでは書き込んだ終わりに余計なヌル文字がついていることがあってもよいというような記載もCにはあったはず)

Boostには、boost::filesystem::file_sizeという正にファイルの大きさを返す関数がある。

980 名前:デフォルトの名無しさん :2006/12/01(金) 08:47:12
CP/Mあたりは、ファイルシステムがファイルのサイズを管理してなかった。
なんで、実際にファイルのケツまで読んでEOFを確認しないと正確なファイルサイズがわからなかった。

981 名前:デフォルトの名無しさん :2006/12/01(金) 08:50:00
C/C++においてはファイルは生(なま)物だからな。
入力中にサイズが変わるかもしれないし、そもそも動的な入力デバイスかも知れん。

982 名前:デフォルトの名無しさん :2006/12/01(金) 09:03:09
なるほど、色々考慮してるんだなぁ。
まぁBoostに関数があるんならいいや。

983 名前:デフォルトの名無しさん :2006/12/01(金) 10:15:30
>>980
管理してないのではなくて、
バイト単位ではなく、ブロック単位の管理だった。

Text fileはそれでは不便なので、最後にCtrl-Zを置くことでバイト単位管理。
これがstdioのtext modeとbinary modeの由来の一つ。
CP/M上のstdioは、text modeでCtrl-Zを見たらEOFを返す。
binary modeはそうではない。
WindowsもCP/M互換で出発したのでこのCtrl-Zの扱いを引き継いでます。

上のような関係でiostreamにもその名残りが。

984 名前:デフォルトの名無しさん :2006/12/01(金) 11:24:49
流れ変えて悪いけど、VC++6.0のSTLのソース、あれ凄いね…
よくわからんけど、なんであんなインデントめちゃくちゃなの?
嫌がらせ?気持ち悪すぎて吐き気して来たんだけど…
まったく読めない…

985 名前:デフォルトの名無しさん :2006/12/01(金) 11:28:39
書いてる人の環境とタブ幅が違うとか
元のソースからVC++6用に機械的にコンバートされたものとか

986 名前:デフォルトの名無しさん :2006/12/01(金) 11:55:11
>>985 よく見るとインデントというより書き方にクセがある感じだなぁ、まぁ慣れかな。一部抜粋するとこんな感じ(vector)
bool _Lt(const _Myt& _X) const
    {return (lexicographical_compare(begin(), end(),
      _X.begin(), _X.end())); }
  void swap(_Myt& _X)
    {if (allocator == _X.allocator)
      {std::swap(_First, _X._First);
      std::swap(_Last, _X._Last);
      std::swap(_End, _X._End); }
    else
      {_Myt _Ts = *this; *this = _X, _X = _Ts; }}
  friend void swap(_Myt& _X, _Myt& _Y)
    {_X.swap(_Y); }
protected:
  void _Destroy(iterator _F, iterator _L)
    {for (; _F != _L; ++_F)
      allocator.destroy(_F); }
  iterator _Ucopy(const_iterator _F, const_iterator _L,
    iterator _P)
    {for (; _F != _L; ++_P, ++_F)
      allocator.construct(_P, *_F);
    return (_P); }
  void _Ufill(iterator _F, size_type _N, const _Ty &_X)
    {for (; 0 < _N; --_N, ++_F)
      allocator.construct(_F, _X); }
  void _Xran() const
    {_THROW(out_of_range, "invalid vector<T> subscript"); }
  _A allocator;
  iterator _First, _Last, _End;
  };

987 名前:デフォルトの名無しさん :2006/12/01(金) 11:55:16
インデントつーか、閉じ括弧の位置がLISP的だった気がする。たしか。

988 名前:デフォルトの名無しさん :2006/12/01(金) 11:57:28
でもこの調子でずらずら詰めて記述されてるんで、最初は圧倒されるね…

989 名前:デフォルトの名無しさん :2006/12/01(金) 12:09:52
STLのヘッダーファイル見ると頭がおかしくなりそうになる
まあ他のDLLファイルもソースコードは似たような感じなんだろうけど

990 名前:デフォルトの名無しさん :2006/12/01(金) 12:21:14
VC++6だと、プラウガが書いたヤツなんじゃないの?
彼は雑誌に良くコードを出すし、STLのソース本も出しているから、
行数が少なくてすむスタイルを好むんだと思う。

コーディングスタイルのスレがあるから続きはそっちで。

991 名前:デフォルトの名無しさん :2006/12/01(金) 13:14:43
Copyright (c) 1995 by P.J. Plauger. ALL RIGHTS RESERVED.
になってたからそうみたい。

992 名前:デフォルトの名無しさん :2006/12/01(金) 13:27:02
次スレはまだですか?

↓よろしく

993 名前:デフォルトの名無しさん :2006/12/01(金) 13:37:03
( ^ω^)立てられなかったお

994 名前:デフォルトの名無しさん :2006/12/01(金) 13:47:53
俺も無理だった

995 名前:デフォルトの名無しさん :2006/12/01(金) 14:32:23
次スレ

C++相談室 part55
http://pc8.2ch.net/test/read.cgi/tech/1164951094/

996 名前:デフォルトの名無しさん :2006/12/01(金) 14:38:46
生きるのに疲れた

997 名前:デフォルトの名無しさん :2006/12/01(金) 15:20:03
age

998 名前:デフォルトの名無しさん :2006/12/01(金) 15:21:30
あっ!
埋めよう

999 名前:デフォルトの名無しさん :2006/12/01(金) 15:22:07
999got

1000 名前:デフォルトの名無しさん :2006/12/01(金) 15:22:42
1000なら寝る。


■過去ログ置き場に戻る■ 1- 前250 次250 最新50
DAT2HTML 0.33f Converted.