トップページgamedev
1001コメント321KB

C/C++ゲーム製作総合スレッド Part6

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2014/07/08(火) 19:30:19.51ID:J+zVqUil
ゲーム製作におけるC/C++全般に関するスレです。

元スレ
DXライブラリ 総合スレッド その17
http://toro.2ch.net/test/read.cgi/gamedev/1383795645/

前スレ
C/C++ゲーム製作総合スレッド Part1
http://toro.2ch.net/test/read.cgi/gamedev/1337516528/
C/C++ゲーム製作総合スレッド Part2
http://toro.2ch.net/test/read.cgi/gamedev/1351015269/
C/C++ゲーム製作総合スレッド Part3
http://toro.2ch.net/test/read.cgi/gamedev/1357899040/
C/C++ゲーム製作総合スレッド Part4
http://toro.2ch.net/test/read.cgi/gamedev/1376262450/
C/C++ゲーム製作総合スレッド Part5
http://peace.2ch.net/test/read.cgi/gamedev/1389798031/
0692名前は開発中のものです。2014/11/19(水) 00:34:02.86ID:OX7d9Gn4
>>687-688
実は真っ先に考えたのはそれなんだけど、
アイテムや改造の数を増やせば増やすほどモコモコとアイテムの全体数が増えて、
管理を考えるとおしっこもっちゃいそうな量になって困った
自由度も低かったし

>>689-691
やっぱりそういう風にやるしかないか、再利用性も高そうだし

いろいろな意見をありがとう 参考になった
0693名前は開発中のものです。2014/11/19(水) 07:21:33.65ID:/n+zepvC
単純に Clone + シリアライズ ではいかんのか?
実態ではなくアイテムIDで保持しようとするから難しくなるんじゃ?
0694名前は開発中のものです。2014/11/19(水) 07:53:10.12ID:VDiSqvaf
>>693
要するに、データを丸々コピーするのじゃいかんのか?って事だろ?
俺は逆に最近レコード管理に切り替えた
っつーかソースコードを一カ所に纏める方が楽だし、メモリ消費も減るから、俺はこの方がいいと思ってる
って言うか、存在しない名前のアイテムが発生するバグに対応するのが面倒で
0695名前は開発中のものです。2014/11/19(水) 08:04:49.35ID:VDiSqvaf
あと、実体処理だとセーブデータに記録した後にデータを変更するのが面倒だと思う
0696名前は開発中のものです。2014/11/19(水) 16:05:10.60ID:MSY6gmXE
一旦データ管理という場面に踏み込むと、こうやって多くの手間や技術を要求される
これだからRPGは初心者にはおすすめできないんだが、何故初心者に限ってRPGを作りたがるんだ
0697名前は開発中のものです。2014/11/19(水) 19:21:08.31ID:HWXJ3kGs
RPG・・・データ管理・データ作成が面倒
SIM・・・バランス調整や、AIやナビゲーションマップ等が面倒
ADV・・・フラグ管理やテキスト作成が面倒
ACT・・・地面や壁との接触判定、マップを作るのが面倒
RCE・・・車を操作するAIが面倒、サーキットのウェイポイントの調整が大変
STG・・・当たり判定を飛ばすだけ、壁なんて要らん、AIも適当でいい、テキストもいらん、敵がいつ出てくるかだけ考えろ、伸ばしたい分野だけ拘れる登竜門的存在
0698名前は開発中のものです。2014/11/19(水) 20:59:46.83ID:OX7d9Gn4
ブロック崩し…パズル…
まあ、パズルはそれこそAIがな
将棋で超AI作ってプロ棋士と戦わせるだけでお祭りになるくらい
0699名前は開発中のものです。2014/11/19(水) 23:18:55.69ID:7ML/+Uac
テトリス!
0700名前は開発中のものです。2014/11/20(木) 00:30:04.14ID:vWl5cX6m
趣味プログラミングは鼻くそホジホジしたり屁をこいたりしながら
土日の内に作っちゃう人間なので、RPGとかデカブツは無理だなぁ
元々好きじゃないから作る気も起きないわけだが
0701名前は開発中のものです。2014/11/20(木) 04:07:38.08ID:h+JiqRdV
俺も学生の頃はそうだったな。
集中力自慢で4日間睡眠時間2時間で仕上げきる、それを自慢にしてた。

だが社会人になって悟った。
ある程度以上のものを作ろうと思ったら、それじゃ駄目なんだと。
プロマネとしてチームを率いることができなければ、いつまでも
徹夜自慢のバカのままで終わるんだと。
0702名前は開発中のものです。2014/11/20(木) 05:21:30.14ID:vSwwwYEe
そっか、すごいね
0703名前は開発中のものです。2014/11/20(木) 16:13:36.88ID:ASkU6c/s
やりたい事がすり替わっちゃったんだな、可哀相に
0704名前は開発中のものです。2014/11/20(木) 17:24:27.51ID:5jfsrVJn
人海戦術でしか作れない程度の能力の低いプログラマーには社会人が凄く見えるんだろうな
0705名前は開発中のものです。2014/11/20(木) 17:50:24.81ID:6dfcdxQ7
人海戦術が程度が低い制作形態かどうかは知らないが、
絵とか音楽とかにこだわりだしたら誰かの手も借りたくなる事はある
だが、素材探しをしているうちに結局完璧に自分の構想を実行できるのは自分だけだと悟る
俺が何人か欲しい
0706名前は開発中のものです。2014/11/20(木) 18:06:31.42ID:5jfsrVJn
10人プログラマーが集まれば作れるようなゲームを作りたいなら、
そもそもC/C++にこだわる必要もなくね?人海戦術に向いた言語なら色々とあるんだし
0707名前は開発中のものです。2014/11/20(木) 18:38:32.43ID:5jfsrVJn
>>705
まあ、少数精鋭で作られたゲームの方が良いゲームは多くね?
人数が増えれば増えるほど、どうしても軸はプレまくるからな
0708名前は開発中のものです。2014/11/20(木) 19:31:14.46ID:iI+OSFLH
少数精鋭もやり過ぎるとこうなる

Appleのソフトウェアの品質が次第に低下している理由は? - GIGAZINE
http://gigazine.net/news/20141016-apple-software-quality/

Appleは世界的な巨大企業ですが、同レベルの企業に比べるとはるかに小さなソフトウェアチームを意図的に構成しています。
これは「たくさんのB級プレイヤーを雇用するより、少しのA級プレイヤーを雇用する方が好ましい」というスティーブ・ジョブズの方針によるもの。
ジョブズが亡くなった後もこの方針は続いていますが、「最上級の人材」だけでチームを構成するため、人手が足りないチームへ別チームの人材がヘルプに入ることがあります。
最高の人材獲得に挑戦するのは間違ったことではないのですが、キーパーソンのエンジニアがiPhoneチームのヘルプに入っていたために、OS X Leopardのリリースが遅れた、という事態も起こっています。
0709名前は開発中のものです。2014/11/20(木) 19:36:39.53ID:36zbpl++
ゲームと一緒にされても
0710名前は開発中のものです。2014/11/20(木) 19:37:10.26ID:36zbpl++
IDがperl++
0711名前は開発中のものです。2014/11/20(木) 22:05:42.89ID:93aHVuNb
そもそも小規模開発なら汎用のゲームエンジン使えばいいしプログラマそんな要らないよな
人が必要になるのは基本的に素材作りだろうし
0712名前は開発中のものです。2014/11/20(木) 22:16:36.81ID:xrUP7PKr
そういえば、おソロだとテストがまずいことになりそう
なにしろ、自分はメタデータが頭の中に叩き込まれている少なくとも中級者だ
そこからバランス調整に入ったら初心者がうんざりするゲームになりそう
バグ取りも自分の発想だけだと限界があるし

ま、制作自体には直接関わりない事だけどね
0713名前は開発中のものです。2014/11/20(木) 23:09:21.65ID:94t7DNRt
マだけの人海戦術製作やってみたい気もする
でも標準ライブラリが貧弱なC++だと、まずstl, boost, pocoとか
どれを使うかで決裂しそうだな
0714名前は開発中のものです。2014/11/20(木) 23:47:01.70ID:XIRb6nJJ
なんか、ただの知ったかぽい
0715名前は開発中のものです。2014/11/21(金) 00:06:46.12ID:1pvURVep
boostってまだあったのか。
今だと何の用途につかってるの?
0716名前は開発中のものです。2014/11/21(金) 00:13:35.21ID:eEbWn5CX
標準ライブラリに入れる機能の実験場みたいなものだから標準ライブラリがある限り存在し続けるのでは
0717名前は開発中のものです。2014/11/21(金) 00:21:11.37ID:7CnZSeAT
>>715
人それぞれ

C++11対応してくれない環境での同等ライブラリとしてとか、

uBLAS
Geometry
Graph

など標準入りしてないけど有用なライブラリもあるし、
coroutineとかC++11以降にBoost入りしたのもある。

Boost.GeometryはMySQLに使われてたりするよ。
0718名前は開発中のものです。2014/11/21(金) 03:19:55.68ID:K9GeSQKw
C++が一番楽しい。
C++11最高だ。
0719名前は開発中のものです。2014/11/21(金) 07:08:46.35ID:qV4oLsfC
ゲームプログラマーの求人ってどこで探せば良いの?
0720名前は開発中のものです。2014/11/21(金) 07:19:13.80ID:pFBl4fEs
住んでる地域が東京圏か大阪圏内で無い限りほとんど無い
自分から売り込め、もしくは起業しろ、あるいは同人から始めろ
0721名前は開発中のものです。2014/11/21(金) 08:02:03.86ID:KX4IO8pf
ゲーム業界はやりたい人が多い割りに雇用創出効果が薄いから
競争率激しくて経営者もやりたいことやらせてもらえて感謝しろみたいな態度でくるから
激務薄給で使い捨てだよ
0722名前は開発中のものです。2014/11/21(金) 08:51:37.88ID:LfVWOyzt
おじいさんたち、板違いの話題は適切な板に誘導して差し上げて
http://wc2014.2ch.net/recruit/
http://kanae.2ch.net/job/
http://kanae.2ch.net/prog/

質問者共々、行ってらっしゃい
0723名前は開発中のものです。2014/11/22(土) 00:33:56.72ID:GjARED3K
>>713
>マだけの人海戦術製作
それ楽しそうだね。
テクスチャ、モデリング、効果音も含めて、すべてProcedualに生成するってやつでしょ。
音楽だけは無理か。
0724名前は開発中のものです。2014/11/22(土) 11:11:14.41ID:2kOY5/sq
個人でも最初はそんな感じだけどなー
0725名前は開発中のものです。2014/11/22(土) 11:27:35.29ID:UXfM8O3M
>>723
音楽でもMMLのライブラリがあればプログラミングするように作曲が可能
0726名前は開発中のものです。2014/11/22(土) 12:04:53.88ID:2kOY5/sq
MMLって聞いてマビノギかよと思ったらMusic Markup Languageだったんだな
Mabinogi Music Languageかと思ってた
0727名前は開発中のものです。2014/11/22(土) 12:51:58.39ID:z05T//p3
>>693-695
アイテムを実体処理するとセーブデータ改造が容易になるけどな
昔、ソーサリアンてゲームでアイテム魔法の空を飛ぶ魔法の消費MPを0にした事がある
0728名前は開発中のものです。2014/11/22(土) 15:25:07.79ID:2kOY5/sq
チート防止方法って
・リソースファイルを暗号化する
・リソースファイルが改竄されていないかハッシュ値を照合する
・メモリ上の値が書き換えられていないかチェックする
の3つでいい?他にするべきことってある?

スタンドアロンなゲームを想定してる
0729名前は開発中のものです。2014/11/22(土) 15:28:45.59ID:4gvnFUCF
深く考えずにユーザーには改造の自由を与える
0730名前は開発中のものです。2014/11/22(土) 15:50:11.91ID:2kOY5/sq
>>729
そのスタンスいいな
githubへのリンクでも添付するか
0731名前は開発中のものです。2014/11/22(土) 16:53:28.19ID:5ZWxKn8M
海外のゲームはそれが普通だね。
オンラインの場合は別だけど
0732名前は開発中のものです。2014/11/22(土) 17:01:09.64ID:GtITkLZ+
データを全てXMLやCSVで記述しておいて数値変え放題にする
0733名前は開発中のものです。2014/11/22(土) 17:02:59.01ID:ycIYhRSf
時代はオープンデータ
0734名前は開発中のものです。2014/11/22(土) 17:31:14.63ID:2kOY5/sq
それでもハッシュ値は欲しいな
実績「一度もデータを変更せずにクリア」とか
0735名前は開発中のものです。2014/11/22(土) 18:43:56.35ID:rQjhf0Yu
海外はMOD作り放題なゲームも多いな
0736名前は開発中のものです。2014/11/23(日) 01:04:58.19ID:4ZBc6dKC
チートを使わないでクリアすると実績だなんて、
なんでそんな当たり前のことを?と変な話にしか見えない俺
っつーか、ハッシュならまずあり得ないだろうが実績ごと改造されそうだよ
0737名前は開発中のものです。2014/11/23(日) 01:18:05.75ID:mI42wc3z
そこまでされるようなゲームを作れるのかが問題
0738名前は開発中のものです。2014/11/23(日) 01:22:28.60ID:SnMKy+pN
商業タイトルならともかく個人制作でチート対策なんてかんがえないよな
0739名前は開発中のものです。2014/11/23(日) 11:11:41.84ID:+dJYaAUV
でもセーブデータがテキストファイルにcsvで直書きとかだったらプレイする方も萎えるじゃん
0740名前は開発中のものです。2014/11/23(日) 12:27:51.29ID:EqABDKyO
個人制作はチートされてなんぼのレベルだからな。
チートされる規模まで広がるようになってから対策を考えても遅くない。

それ以前にチート対策なんて、
「桃尻にて落ちなんは、心憂かるべしと思ひけり」ってやつだ。
0741名前は開発中のものです。2014/11/23(日) 12:30:53.64ID:kaKHHfmS
一般ユーザーはバックアップ目的でのセーブデータの位置やファイル名は気にするが中身までは気にしない
チート目的ならバイナリかテキストの違いしかない
オンラインでランキングや対戦等他人との接点がある場合には対策したほうが良いけどオフラインは自由にしてやりたい
0742名前は開発中のものです。2014/11/23(日) 13:56:57.65ID:82D+n2IC
中身がテキストでも拡張子を*.savとかにしてあれば普通は開かないよね
まぁチート防止法なら>>728の3つで十分な気がする
メモリ上の数値チェックはしなくてもいいと思うけどww
0743名前は開発中のものです。2014/11/23(日) 14:02:44.82ID:+dJYaAUV
ていうか>>728以外に何かある?
リソース抜き出しとか通信盗聴は別にして
0744名前は開発中のものです。2014/11/23(日) 16:18:46.75ID:n5OStoXo
ブラウザやランチャーからの起動に限定...とか
0745名前は開発中のものです。2014/11/23(日) 16:49:33.89ID:cJk/+EVe
>>741
ほんとこれ。
この意見とまったく同意見だわ。
0746名前は開発中のものです。2014/11/23(日) 20:40:57.35ID:4ZBc6dKC
MODはともかく、コンテンツ食い荒らさせても開発者には全くメリットないし
そこまでして公開するくらいなら、むしろ公開せずに自分で楽しむよ

タダで公開している時点でメリットなんてないだって?
この俺が、金やちやほやされるためにゲームを作っていると思っているのかーッ!
(目を泳がせながら)
0747名前は開発中のものです。2014/11/24(月) 00:38:32.67ID:8cacGq0B
サーバーにセーブデータ保管
0748名前は開発中のものです。2014/11/24(月) 10:03:38.23ID:dzDmH2rP
データ改竄は許しまへんで
0749名前は開発中のものです。2014/11/24(月) 17:33:44.16ID:Z/FunYTK
>>740
クソゲー杉てタルいんで、さっさと改造してCGだけ回収してる
改造できない同人ゲーなんてやってられっかよ
0750名前は開発中のものです。2014/11/24(月) 17:55:20.84ID:2xrZiHXU
そだね
0751名前は開発中のものです。2014/11/24(月) 18:39:45.23ID:zdvI3CUV
そこまでしてcg回収なんかしたいとなると、修羅の国のゲームかな?
修羅の国のゲームは同人であるなしに関わらず基本的にクソゲー
クソゲーでない修羅の国のゲームは希少
0752名前は開発中のものです。2014/11/26(水) 17:10:13.93ID:uKd9Te04
中央のスプライトに隣接しているスプライトを、
中央のスプライトの大きさによって位置を変えられるようにするには、
どのような方法が考えられるでしょうか?
あらかじめ中央のスプライトにフラグを設定しておいて、
その数値によって周りの位置を制御するという方法は思いついたのですが、
どうもマジックナンバーだらけで気持ちが悪いし汎用性が低いのです
0753名前は開発中のものです。2014/11/26(水) 17:20:11.22ID:Y1/yNkyi
emun
0754名前は開発中のものです。2014/11/26(水) 19:59:12.17ID:AChn1R5P
enum
0755名前は開発中のものです。2014/11/26(水) 20:02:16.64ID:/W/8yg6H
nullpo
0756名前は開発中のものです。2014/11/26(水) 20:23:02.74ID:utK4NJ2p
ga!
0757名前は開発中のものです。2014/11/26(水) 20:49:02.86ID:gy/4zLs8
隣接の概念があるなら、それぞれのスプライトはパラメータとして「半径」を持っているのでは?
中央のスプライトだけ特別扱いする必要はないんじゃないの?
0758名前は開発中のものです。2014/11/29(土) 12:17:43.47ID:RkdSMohZ
http://brbranch.jp/blog/201312/cocos2d-x/cocos2dx_ccscale9sprite/
これかな?
0759名前は開発中のものです。2014/11/29(土) 12:18:18.60ID:RkdSMohZ
あやべ、cocos2dxのスレじゃなかった
0760名前は開発中のものです。2014/11/30(日) 12:30:11.20ID:2LtupVMk
std::vectorのfrontとsizeとbeginとendとdataの使い分けの見分け方を教えて下さい
0761名前は開発中のものです。2014/11/30(日) 15:32:55.05ID:wowBQ4xC
http://www.cppll.jp/cppreference/cppvector.html
https://sites.google.com/site/cpprefjp/reference/vector/data

sizeは要素数取得
beginとendはイテレータ始端と終端取得
frontは先頭要素の参照取得でv[0]と一緒
dataはvectorのデータをただの配列として使いたい時用で&(v[0])と一緒

イテレーターは全部の要素に処理する時とかに使う時が多いけどsizeの数だけ繰り返しとかでも出来るし
使い分けとか考えなくても好きに使ったらいいんじゃない
0762名前は開発中のものです。2014/11/30(日) 16:30:02.97ID:9UMHtIHE
イテレータいわゆる反復子を使うと
for_each(ary.begin(), ary.end(), func());
このような感じで書ける、ary がvector<int> であってもいいし、list<int>であってもいい、
最初にlist<int> で、あとでvector<int>に書き直してもfor_eachはそのままで使えるので書きなおす必要はない。
typedef list<int> IntArray;
このようにtypedefしておけば IntArrayを使ってあとでvectorに変えるのも
typedef vector<int> IntArry;
にすればいいだけになるので変更が楽になる。
ただ、ゲームのプログラムだと速度的に最初からvectorに決まってたりする。

dataはstringのc_str()のように、受け取る側が配列ポインタになってる時に使うものだと思う。
C言語のライブラリとかはそのようなのが多いしな。
0763名前は開発中のものです。2014/11/30(日) 18:07:42.80ID:2LtupVMk
>>761-762
ありがとう
0764名前は開発中のものです。2014/11/30(日) 18:49:40.41ID:09iyr5dN
最適化で変数が削られる憂き目に遭った・・・。

DirectXMathのXMMatrixPerspectiveFovLHの第2引数に与える、画面のアスペクト比なんだけど、
直前で

float fAspect = VP.Width / VP.Height;

ってな感じで書いてたら、Debugモードだと正常に動作するのに、
Releaseモードだとクラッシュする。

とりあえず、コメントアウトしながら原因箇所を追跡したら、上記のアスペクト比算出箇所に行き着いたわけ。
試しにvolatile修飾子を付けてみたら正常に動作することになったから、
最適化で削られたことが判明したんだけど、これ、どういうときに発生するか知ってる?

今までコンパイラ(VC++)に裏切られたことが一切なくて、信頼しきってただけに、ちょっとショック・・・。
今回は小規模なテストプログラムだから大した影響はなかったんだけど、
大規模で複雑なの組んでるときにこういうのが出ると話がややこしくなって厄介だ。
0765名前は開発中のものです。2014/11/30(日) 19:08:33.40ID:6mhBW/fH
再現手順も説明できずにコンパイラのバグとか言い出す奴の
99%以上は本人のミスだ
0766名前は開発中のものです。2014/11/30(日) 19:19:20.08ID:wowBQ4xC
VCのデバッグとリリースで最適化って変わんの?
デバッグビルドってデバッグコード埋め込むだけだと思ってたわ

http://msdn.microsoft.com/ja-jp/library/dykf6bx9.aspx
0767名前は開発中のものです。2014/11/30(日) 19:28:29.73ID:3sYJoklf
デフォルトではデバッグビルドのオプション設定は最適化無効になってるみたいね
0768名前は開発中のものです。2014/11/30(日) 19:28:51.51ID:6mhBW/fH
デバッグが困難になるからデフォルトでは最適化は無効になる
0769名前は開発中のものです。2014/11/30(日) 19:37:40.53ID:mq2znQaR
>>764
その変数が引数としてしか使われてないなら、変数を経由しないで
計算結果を直接スタックに乗せるようになってる、とかかなぁ。消えた原因は。

あんまり関係ない話だけど
つい最近(というか今日)、DirectXMathで躓いたのが
newで確保したXMVECTORの配列が16バイトアラインメントに乗って無くて
SSEのmovapsでアクセス違反が起きるって奴だった。
アクセス違反が報告されたメモリアドレスが「0xFFFFFFFF」ってなってて
どういうこっちゃとしばらく悩んだよ・・・。
07707642014/11/30(日) 19:54:39.02ID:09iyr5dN
>>769
ちょ・・・、今回クラッシュするところの逆アセンブリ結果が、同じくmovapsっす・・・。
floatの引数削られるのと、どう関係あるか分からないけど。
DirectXMathのSSE絡み、ちょっと怖いっすね。

>その変数が引数としてしか使われてないなら、変数を経由しないで
>計算結果を直接スタックに乗せるようになってる、とかかなぁ。消えた原因は。

そうそう、引数にしか使われてないから、ダイレクトにスタックに乗せるのは納得する。
けど、なぜクラッシュw
0771名前は開発中のものです。2014/11/30(日) 20:14:02.81ID:mq2znQaR
>>770
movapsはXMMレジスタへ128ビット分のデータを一括転送するSSE命令だけども
メモリ⇔レジスタの転送の場合、メモリ側が16バイト境界に沿っている必要があるのよ。
(movapsのaはalignedのa)
XMMatrixPerspectiveFovLHの戻り値を格納しようとしている変数(XMMATRIX)の
メモリアドレスが怪しい気がする。
XMMATRIXはXMVECTOR4個の塊だし
0772名前は開発中のものです。2014/11/30(日) 20:25:50.60ID:mq2znQaR
追記。
多分、リリースビルドでだけ発生する原因は、速度優先の最適化によって
movups命令(16バイト境界に沿っていなくてもOK、ただし低速)からmovaps(高速)に
使用する命令が置き換えられたからだと思う。

で、多分fAspectにvolatileを付けたら動くってのは
fAspectの分だけスタック使用量が増えるから、格納先変数のアドレスが
16バイト境界に合うようになって、それでエラー落ちしなくなるんじゃないかな・・・
でも「_m128 型の変数は、16 バイト境界に自動的にアラインされます。」ってMSDNには書いてあるから
違う原因かも。
07737642014/11/30(日) 21:00:10.04ID:09iyr5dN
>>771-772
サンクス。
fAspectが増えたことで16Byteアラインしたから通ったとしたら、たまたまで怖い気もw
いずれにせよ、たしかに_m128型使ってる以上、アラインされることは期待できそうだよね。
0774名前は開発中のものです。2014/11/30(日) 21:49:21.14ID:3sYJoklf
いつになく勉強になる流れだなw
0775名前は開発中のものです。2014/11/30(日) 22:42:52.60ID:wowBQ4xC
アライメントでクラッシュとかデバッグ大変そう
ヒープに確保すんのはやめた方がいいらしいけど
http://msdn.microsoft.com/ja-jp/library/ee418725%28v=vs.85%29.aspx
0776名前は開発中のものです。2014/12/03(水) 13:17:19.43ID:Z1yRDwuo
Unityにナビメッシュっていう機能あるけど、内部ではダイクストラ法使ってるの?
0777名前は開発中のものです。2014/12/03(水) 13:18:24.64ID:iziS6ZnM
3回に1回は使ってる
0778名前は開発中のものです。2014/12/03(水) 21:11:51.59ID:OgMzERcn
ファイルの読み書きのやり方って、

・C標準のfopen系
・C++標準のfstream系
・WinAPIのCreateFile、ReadFile、WriteFile

みたいに、たくさんあるけど、使い分けってどうしてる?
0779名前は開発中のものです。2014/12/03(水) 22:44:11.09ID:TXwtBb38
WinAPI系に近いライブラリを作る場合はCreateFile、ReadFile、WriteFile、
普段使いのC++で機種依存しないライブラリはstream系
C系のライブラリで開発汁ときはfopen系

いずれにせよメインプログラムから直接ファイル操作関数は使わなーい
0780名前は開発中のものです。2014/12/04(木) 01:02:24.18ID:YkojZjJM
Windows環境と仮定して。

C標準を使うとランタイムライブラリが必要になるので却下。
今どき使うのはオッサンとバカだけ。

C++も結局はWinAPIの薄いラッパに過ぎないので、
基本的にはWinAPIを呼ぶのが正解。
0781名前は開発中のものです。2014/12/04(木) 03:01:38.93ID:ClGYe+T3
CRT使わないなんて、よほど節制しないとつらくないか?
try-catchを使っただけでもCRTが要るだろ?

あと、Windowsなら、よく使うのはAPIの関係でIStream系が多いなぁ。
0782名前は開発中のものです。2014/12/04(木) 03:07:11.75ID:iZaOw4vq
C++だってランタイム必要なのに変わりないような
0783名前は開発中のものです。2014/12/04(木) 08:11:19.48ID:L+71L5pW
ランタイム必要な記述ってどういうのがある?
例外、IO、メモリ関係とかはランタイム必要そうだけど
その辺全部OSのAPIで済ますの?
0784名前は開発中のものです。2014/12/04(木) 08:35:11.34ID:y13HpW+M
>>780の常識は世界の非常識
0785名前は開発中のものです。2014/12/04(木) 09:42:58.76ID:ClGYe+T3
>>783
昔のATLコンポーネントで、実行ファイルを小さくするためにランタイム無しってのはたまに見かけた。
IOやメモリ関係は、Win APIで代替が利く。 例外は使わないか、SEHやRAIIで代用。
ただ、浮動小数やstd::*を使えないし、かなりの制限を受けるよ。
0786名前は開発中のものです。2014/12/04(木) 10:01:50.12ID:Eg8ibX6r
要件も確認しない実行ファイルサイズ至上バカが、生産性もクロスプラットフォームも捨ててWin32APIを直接使うって主張してるだけだな。
そっちの方がオッサンくさい。
0787名前は開発中のものです。2014/12/04(木) 19:29:15.66ID:tgdEpz3N
自分はRAIIなfstream系が好みだな。

WinAPIでも、
shared_ptr<void> pFile( CreateFile( ... ), CloseHandle );
でRAIIできるし、WinAPIならメモリマップドファイルが使えるから、Seekすることが多い用途で使う。

fopen系でも、上記要領でRAIIできるけど、
fopenだと、VC++でfopen_s使えって警告がウザいし、1行でスマートに書けないから嫌い。
でも、fprintf、fscanfは便利なんだよなぁ・・・。
0788名前は開発中のものです。2014/12/04(木) 21:52:37.38ID:BSnl4VWG
状況によって使い分けてるな。なので>>778に近い気がする

ファイル入出力に近いモジュールは一度組んだらほぼ手を加えないので
環境依存のAPIを使ってても、次に使う時は細かいこと忘れちまってるな

オッサンだな
0789名前は開発中のものです。2014/12/04(木) 21:53:54.27ID:BSnl4VWG
×>>778>>779
0790名前は開発中のものです。2014/12/06(土) 04:00:55.39ID:X/U/zDqc
まとめブログが世論誘導加速中 閲覧数と影響力が大きいのでまとめブログにもコメント宜しくお願いします。
http://jbbs.shitaraba.net/bbs/read.cgi/news/5097/1275245794/96 ←
0791名前は開発中のものです。2014/12/07(日) 13:13:24.02ID:mFsIvomy
クラスのメンバのvector変数にpush_backをしたのに、push_backしたメンバ関数が終了すると
他のメンバ関数でsizeが0になるんですが、vectorにそういう感じの仕様ってあるんですか?
http://codepad.org/QE4clISm

vector変数の中身を消す処理はしてません
■ このスレッドは過去ログ倉庫に格納されています