C vs. C++:テキストファイルの一括読み込み
思い立ってC言語の勉強再開。getlineという関数があった気がしたけど,ISOの規格にはなかった。なんでもPOSIXとかSUSとか他の規格で定義されてるらしい。SUSが一番大きい集合だから,これにあれば大丈夫だよな… pubs.opengroup.org/onlinepubs/969…
2015-11-06 23:30:23@senopen getlineとgetdelim関数。元々はGNUの独自拡張だったけど2008年にPOSIX標準に取り込まれたらしい。 テキスト処理の基本として,ファイルを文字列で全部読み込んで,改行で区切って処理というのをよくやる。ひとまずCでもできるようにするか…。
2015-11-07 00:36:04@senopen C言語でファイルまるごと読み込むというの。 getdelim関数の区切り文字にEOFを指定して最後まで読んだけど。もっといい方法あるのかな。getdelimの引数の変数をいちいち定義するのが面倒… pic.twitter.com/nQ113ITm69
2015-11-07 01:53:09@_EnumHack C++だとこの画像みたいな感じですか?もっと簡単にできますか?この方法はライブラリを使いすぎです。 C++でCより短く書けるのですか? fa11enprince.hatenablog.com/entry/2014/04/… pic.twitter.com/W080gbTnpX
2015-11-07 02:03:12@senopen stringが使えるので楽って言いたかったです。こんな感じでどうか。 pic.twitter.com/tmAFvv702n
2015-11-07 02:21:41ライブラリ4つ(しかも標準ライブラリ)で使いすぎだと言われたらC++では何もできない(何もできないとはいっていない)
2015-11-07 02:23:29@_EnumHack なるほど。すっきりしてますね。以下2点が気になりますが。 1.tmpという一時変数の存在 2.whileの制御構造の存在 参考になりました。
2015-11-07 02:30:42@_EnumHack 一発で読み込めるような関数ないのですか?スクリプト型言語みたいに。いちいちそこでループさせないといけないのがなんか気持ち悪いです。 あと,C言語だとライブラリ1個で済むのにC++になったとたん3倍になるのもなんかいまいちです。
2015-11-07 02:37:30@senopen このgetdelim関数を使ったファイル全体の一括読み込み。ネットで探したけど,ここくらい。 あまり情報ないな…。まあいいか。今後はこの方法でファイル読み込もう。 stackoverflow.com/questions/1745…
2015-11-07 02:43:15@senopen それが、ないのですね。ライブラリは小分けにして必要なだけインクルードしたほうがよいと思いませんか? 機能を疎結化して小分けにして組み合わせて使えというのが設計指針なのですよ。ポリシーですかね。
2015-11-07 02:43:28@_EnumHack 方針はわかりますけどね。 単純にCとC++を比較したときに,目がつきました。たぶん,大きくて複雑なことしようとしたら有効なのでしょう。 今まで楽してたので面倒に思っただけですよ。
2015-11-07 02:50:26@_EnumHack C言語もC++と同じようにライブラリでできることは言語機能に含まないような設計だったと思います。 似ているので比較してしまいます。 C++を支持しているようですけど,今のところ僕はCもそんなに悪くないと思っていますのでね。
2015-11-07 02:59:39@senopen 似ていると言うか、ほぼ同じでは? CでできることがC++でも出来るなら、より型安全なC++がいいです派 C++を書きながらC言語の機能も使ったらいいのですよと思ってしまいます
2015-11-07 03:06:35.@senopen 初期値の最終的に省略できるところを切り詰めて10行に収まった。 定義しないといけない変数が多いな。後1個サイズを指定している変数を削れたらよいのだけど。もうちょい試そうか。 うまくいけばスニペット化してこの先一生使えるからね。
2015-11-07 03:07:43