- 1 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 09:10:30 ]
- エスケープシーケンスやWin32APIなどの環境依存な物でもOK。
ただしその場合、質問者は必ず、環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.39【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1182740506/ 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
- 369 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 15:09:31 ]
- >>364-368
A.h を頭から順に読んでいったコンパイラさんは、 メソッド B::getA_Base() の存在を知ることができない。
- 370 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 15:16:33 ]
- クラス定義の中で関数を定義すると、
クラス定義の直後にinline付きで定義されたものとして扱われる。 つまりA_Derivはこう書いたのと同じに扱われる。 class A_Deriv : public A_Base { public: void func(); }; inline void A_Deriv::func() { getB()->getA_Base(); } ところが、この時点ではclass B;という前方宣言しかないため、 Bに関する具体的な情報がわからない。それで367のエラーになってしまう。 解決するには、A_Deriv::funcの定義をBの定義より後に回せばいい。 例えば、A.hとB.hをインクルードするcppファイルでA_Deriv::funcを定義したり、 A_BaseとBを同じヘッダで定義して、そのヘッダの一番下に インラインでA_Deriv::funcを定義するなどの方法がある。
- 371 名前:365 mailto:sage [2007/07/25(水) 16:17:52 ]
- >>369
>>370 早速の返答ありがとうございます。 かき方がとても悪かったです、A_Deriv::func()は実際はcppの方に実装してあります。 そして、A_Deriv::func()の実装したcppでのincludeをA.h B.hともにして通りました(A.hのみincludeしていた状態でした) とてもバカなミスでした。お手数おかけしました。どうもありがとうございました!
- 372 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 18:01:38 ]
- >>353
どこのGCCの話をしてるんだ? Win以外じゃ主流なんだが・・・
- 373 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 18:05:11 ]
- >>372
かわいそうな子に触らないで
- 374 名前:353=372 mailto:sage [2007/07/25(水) 18:22:02 ]
- つまらん。もっと面白い突っ込みしろよ
- 375 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 19:01:38 ]
- 質問なんですが、配列には最後の要素に必ずナル文字(\0)が
入らないといけないんですか?
- 376 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 19:05:27 ]
- 文字列なら
- 377 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 19:08:49 ]
- >>375
ぬるぽ 文字じゃなければ別に\0入ってなくていい。 文字列だと文字の終わりがわからんから。 文字表示するとき、1個ずつ文字を調べて'\0'まで描画するみらいなルールがあるの
- 378 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 19:19:54 ]
- みらいなみらいなけーの
- 379 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 10:13:10 ]
- らめぇー
- 380 名前:デフォルトの名無しさん [2007/07/26(木) 11:42:25 ]
- VC.NET2003で
mkstemp() が使いたいのですが、どうしたらいいでしょうか?
- 381 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 11:59:03 ]
- >>380
それは諦めて、標準ライブラリ関数のtmpnamやtmpfileを使う。
- 382 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 12:02:02 ]
- 探せばwin32版の実装も転がってるんじゃないのか
- 383 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 12:12:44 ]
- >>382
つCygwin VC++で使えないだろうけどね。
- 384 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 15:14:57 ]
- エラーチェックが甘いけど、自作するならこんな感じかなぁ。
#include <windows.h> #include <sys/stat.h> #include <io.h> int mkstemp(const char *templ) { char *buffer; DWORD length; char filename[MAX_PATH]; length = ::GetTempPathA(0, NULL); buffer = (char *)malloc(length); GetTempPathA(length, buffer); if (GetTempFileNameA(buffer, templ, 0, filename) == 0) { free(buffer); return -1; } free(buffer); return open(filename, _S_IEXEC); }
- 385 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 15:19:57 ]
- すいません、生徒5人で3科目(国語・数学・英語)の点数を2次元配列に読み込んで、
その最高点と平均点を求めるプログラムを書いたのですが、なぜか平均点がうまく出ません・・・。 どこが悪いのでしょうか。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4757.txt
- 386 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 15:30:16 ]
- printf("[国語]平均点 : %d\n", ave[i]); ここの%d
- 387 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 15:35:23 ]
- >>386
・・・・・orz すいませんホントありがとうございます・・・。自分ではなかなか気づかないものですね・・・。
- 388 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 15:39:47 ]
- >>387
普通のコンパイラなら警告を出してくれると思うのだが。
- 389 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 15:40:14 ]
- え?printfだぜ?
- 390 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 15:42:47 ]
- --
for (i=0; i<3; i++) { switch (i) { case 0 : printf("[国語]最高点 : %d\n", max[i]); -- 激しく間が抜けたコードだな。そこまでループに拘るなら文字列も動的に作ればいいものを。
- 391 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 15:43:53 ]
- >>389
え? 今時出せないコンパイラなんてあったの? すまん、私が物を知らないらしい。
- 392 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 15:44:51 ]
- >>391
じゃあ、その出すコンパイラと出る例をあげてくれないか。
- 393 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 15:46:18 ]
- gcc -Wallで警告でるよ
- 394 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 15:48:18 ]
- gccはputsに置き換える件といい、余計なお世話が多いな。
この文字列が変数だったら検出できんのかね?
- 395 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 15:49:35 ]
- static char const * const subjs[] = {"国語", "数学", "英語",};
for (ic = 0; ic < sizeof(subjs) / sizeof(* subjs); ++i) { printf("[%s]最高点:%d\n", subjs[ic], ave[ic]); } とか? そこまで凝らなくても良さそうだが。 #でもそれならループにしなくてもって話になるか。
- 396 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 15:50:33 ]
- gccはprintf()を知っているから、警告を出すし、場合によっては
puts()などに置換さえするが、gcc以外でそういうことをやる コンパイラを俺は知らないな。 昔はそういうのはlintのやる仕事ということになっていた。
- 397 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 15:51:09 ]
- >>394
iccも同じようなことしてきたよ。勿論変数なら検出できないだろうけど、フォーマット文字列を 動的生成する香具師もそうそういないから(いてもその場合どうせトリッキーだし)実質問題なかろう。
- 398 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 15:51:53 ]
- >>395
文字列のリストなら、最後に番兵のNULLをつけるほうが俺は好き。 そのほうがコードが綺麗になるしリンケージを超えてもおk。
- 399 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 15:52:26 ]
- なるほど、gccは出るんだね。
stringオブジェクトに%sも出るのかなー、試してみるか。
- 400 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 15:53:27 ]
- >>397
scanf()系だと、*の働きがprintf()と違うから、動的にフォーマット文字列を 生成したくなることは案外多い罠。
- 401 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 15:53:52 ]
- >>398
僕も君が好きだよ
- 402 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 15:54:30 ]
- >>398
その場合、配列要素数に使えない。 >395の方法なら、double ave[sizeof(subjs) / sizeof(* subjs)]という使い方もできる。 つまり、教科数に依存するマジックナンバーを全廃できるわけで。 #そこまで凝らなくても云々
- 403 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 18:00:41 ]
- >>402
この例のような線形探索をするだけなら番兵で十分で、配列要素数は不要だし、 マジックナンバーも要らないって話でしょ
- 404 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 18:14:33 ]
- >>384
open()の第二引数が抜けてるし、テンポラリファイルをclos()しても削除されない んじゃないか
- 405 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 19:33:50 ]
- >>402
sizeof subjs / sizeof *subjs - 1
- 406 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 19:35:16 ]
- って、リンケージの問題もあったのか。
- 407 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 19:56:22 ]
- グローバル変数のフラグが沢山あるんですが、
どうにか纏めたいんですがどう修正したらよいか迷ってます。 Singletonで状態を返すクラス作ろうかなとか思ったり 単に構造体に纏めようかなと思ったり。 みなさんはどうしてますか。
- 408 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 20:09:05 ]
- unsigned int とかの変数一つに詰め込んで、ビットシフトのマクロで取り出す
- 409 名前:155 mailto:sage [2007/07/26(木) 22:38:49 ]
- C++でExcelが使えるかどうか質問していた者です。
なんとか辿り着いたのが ttp://www.ujasiri.com/prglib/vc/excel/vc_excel.html このサイトなのですが、時間が無く、サンプルのエラー外しで一杯一杯orz 私はDirectXのゲームに対しての作成サポートツールや、ゲーム自体のデータをExcel(のデータ形式)からやり取りしようと考えております。 他の手段で解説しているサイトが見つからないのですが、ここのサイトに書かれていることで宜しいのでしょうか。 Excelを持っていない人がゲームをしても問題ないかとか、読み込みが非常に重いとか心配しています。
- 410 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 22:46:09 ]
- ExcelがインストールされていないPCだとCreateInstanceが失敗する。
少なくともそこのエラーチェックだけはきちんとしておけ。
- 411 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 22:53:35 ]
- >>408
ビットフィールド使えよ
- 412 名前:155 mailto:sage [2007/07/26(木) 22:58:41 ]
- >>410
おろ、ということはユーザにExcelデータを読み込ますようなゲームは作るべきではないということでしょうか。 検索しても解説しているサイトが中々見当たらないのはそのためか・・orz
- 413 名前:デフォルトの名無しさん [2007/07/26(木) 23:18:28 ]
- 412
CSVやテキストや独自バイナリでまず作っておけよ
- 414 名前:デフォルトの名無しさん [2007/07/26(木) 23:19:08 ]
- なぜエクセルにこだわるのかがわからない
動作が鈍くなるだろ
- 415 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 23:22:40 ]
- おかげで騒ぎまくったお
⊂⌒ヽ (⌒⊃ \ \ /⌒ヽ / / ⊂二二二( ^ω^)ニニ二⊃ \ \_∩_/ / ( (::)(::) ) ヽ_,*、_ノ ブーン /// ///
- 416 名前:155 mailto:sage [2007/07/26(木) 23:34:05 ]
- >>413-414
パーツのステータス管理(耐久度とか説明文)をExcelを使えば編集がしやすいかと思って実装しようとしています。 なるほど、エクセルから独自形式へのコンバートをこちらでしてしまえば、 ユーザは独自形式を読み込むだけなのでExcelが無いと動かないような症状にはなりませんね。
- 417 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 23:37:11 ]
- >>416
その「編集」をするのはユーザなのか、お前さんなのか、プログラムなのか、どれだ ユーザに編集させるんなら、Excelがインストールされているのが当然前提になる 自分なら、CSVなりTSVなりプログラムで扱いやすい形式でセーブしてやれば いいだろ 読み込む仕事はずっと楽で高速だ プログラムが内部的に扱うだけなら、バイナリでもいい
- 418 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 01:16:53 ]
- >>416
Excelからの読み込みようデータでテキスト(もしくはバイナリ)出力を VBAで書いてもいいんじゃない? セルの値をファイルに出力するくらいならVB未経験でも ちょっと勉強すればできるようになると思うよ。
- 419 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 01:44:55 ]
- Excelのバージョンで動き違うし改ページ周り操作したら落ちるしデータ転送遅いし
xlsを書き出す必要がある時以外は使いたくないな
- 420 名前:デフォルトの名無しさん [2007/07/27(金) 09:08:25 ]
- VC2005 Expressを使っています。
一つのプロジェクトxでa.c, a.hを作成してそれらは同一フォルダのstdafx.hを読み込んでいます。 このa.cとa.hをそのままに、プロジェクトyでつかいたかったのでプロジェクトyにドラッグアンドドロップしてプロジェクトに追加して、 プロジェクトy特有のstdafx.hを作成してビルドすれば、 プロジェクトxではプロジェクトx内のstdafx.hを利用して、プロジェクトyではプロジェクトy内のstdafx.hを利用すると夢を見たのですが、 どちらのプロジェクトのa.cもプロジェクトxのstdafx.hを読んでいるようです。 include文に相対パスを書いておけば上のような利用法ができるとおもっていたのですが何とかする方法を教えてもらえないでしょうか。 a.cとa.hに手を加えずに双方のプロジェクトで使えるようにしたいのです。 具体的にはプロジェクトxはダイナミックリンクライブラリのプロジェクトなので#define DLLEXPORT __declspec(dllexport)をつけたくて、 プロジェクトyはスタティックリンクライブラリのプロジェクトなので、#define DLLEXPORT __noopをつけたいのです。
- 421 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 09:26:18 ]
- stdafx.hはプリコンパイルヘッダーのためにあるんだから
共通のものを読まないと意味が無いんだよ。 stdafx.hの中で差があるものを別のヘッダかソースに入れてしまえば。 もしくはプリコンパイルヘッダーの使用をやめてstdafx.hのインクルード自体やめるとか
- 422 名前:デフォルトの名無しさん [2007/07/27(金) 10:37:40 ]
- えと、↑420は、
C:\projectXXX\a.cがあって、C:\projectXXX\a.hでインクルードしているC:\projectXXX\b.hがあり、 プロジェクトxで利用されているとプロジェクトxではb.hはC:\projectXXX\b.hが読み込まれ、 projectXXX ソースファイル a.c(C:\projectXXX\a.c) ヘッダーファイル a.h(C:\projectXXX\a.h) b.h(C:\projectXXX\b.h) プロジェクトyではC:\projectXXX\a.cと、C:\projectXXX\a.hを利用し、 別途C:\projectYYY\b.hを用意しておけばプロジェクトとしての相対パスだからb.hはC:\projectYYY\b.hが読み込まれると思ってたんですが projectYYY ソースファイル a.c(C:\projectXXX\a.c) ヘッダーファイル a.h(C:\projectXXX\a.h) b.h(C:\projectYYY\b.h) コンパイル時、b.hはC:\projectXXX\b.hが読み込まれています。 includeはプロジェクトに入れているファイルから読んでくれるとおもっていたら ファイルシステムの相対パスでプロジェクトにいれていないファイルを読んでいるので これをプロジェクトに入れているファイルを使ってほしいという意味です。 >>421 プリコンパイルヘッダーの知識がほとんどないので勉強してみます。
- 423 名前:デフォルトの名無しさん [2007/07/27(金) 10:55:42 ]
- C言語で「yのx乗」って式を書く場合どうすればいいですか?
- 424 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 11:02:04 ]
- >>423
www.linux.or.jp/JM/html/LDP_man-pages/man3/pow.3.html
- 425 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 11:03:06 ]
- >>423
x**y
- 426 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 11:04:06 ]
- >>425
yのx乗だった y**x
- 427 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 11:08:01 ]
- ネタ回答で訂正レス入れる奴カッコワルイ
- 428 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 11:09:49 ]
- ワロタ
- 429 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 11:10:22 ]
- ウッサイ
- 430 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 11:19:25 ]
- C++ならこれで
#include <cstdio> #include <cmath> class Double { double val; public: Double(const double foo) : val(foo) {} double operator^(const double foo) const {return pow(val, foo);} }; こう書けるのだが。 std::cout << (Double(2.56) ^ 0.5); #演算子の優先順位の都合で括弧が必要なのが切ないw
- 431 名前:デフォルトの名無しさん [2007/07/27(金) 11:21:27 ]
- >>424
即レスありがとうございます。 mathが必要でしたか・・・for文でなんとかするかorz >>425-426 ぷぎゃーwww ちょっと信じかけた俺、涙目ノシ
- 432 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 11:29:50 ]
- C++で大容量CSVファイル(1GBくらいのでっかいやつ)を読み込みたいのだが、
今はwhileでget使って1バイトずつ読み込んでるんだが、いかんせん時間がかかって仕方ない もっと高速にやる方法って何かあるかな? 初心者なりに考えてみたけれどさっぱり思いつかない・・・
- 433 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 11:32:55 ]
- 1GBなんて素で読んでも時間かかると思うが、getって何かな?
CSVならまず1行ずつ読んでみては。
- 434 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 11:35:28 ]
- >>432
csvなら1行ずつ読むだろ……常考 まさか読み込んだ結果も丸ごとオンメモリで保持してないよな。 メモリ量にも拠るが、場合によってはデータの持ち方の工夫も必要かもよ。
- 435 名前:デフォルトの名無しさん [2007/07/27(金) 11:36:12 ]
- WindowsXP + BCB5 + FAT32です。
ファイルに実際には書き込むことなく、希望の長さのファイルを作る方法はないでしょうか。 chsizeは拡張部分を0で埋めます。 seekg + fwrite でできるかもと思いましたが、長さ0の書き込みでは ファイルが期待した長さになりません。
- 436 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 11:49:00 ]
- >>432
文字列処理の部分も疑ってかかるべきだが、IOの部分で言うと 移植性を捨ててmmap()やCreateFileMappingの類を使うのが一番速い。 C++の標準ライブラリだけでやるなら、 ・istreamではなくstreambufを使う。1文字読む版のget()に対応するのは sbumpc()だ。 ・streambuf::pubsetbuf()であらかじめ巨大なバッファを設定する ことで多少はマシになるだろう >>434 CSVってカラム内改行がLFで行末はCRLFだろ 少なくともstd::getline()は役に立たないんじゃないか
- 437 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 12:06:11 ]
- >>435
CreateFile() -> SetFilePointer() -> SetEndOfFile() で出来るはずだが、多分chsize()でも同じことをやっているはずで、 普通にやればゼロ埋めされると思う。 NTFSならいわゆるSparse Fileを作れた気もするがどうだったかな。 FAT32ではだめだろう。
- 438 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 12:26:22 ]
- 質問です
最近勉強はじめたんですけど本やらサイトなど見ながらやってます で、プログラムの書き方なんですが int main(void) と void main() ってのがあるんですけどどう違うのでしょう? 一般的にどっちが使われてるのですか?
- 439 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 12:29:36 ]
- intのほう
- 440 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 12:29:59 ]
- >>436
csvファイルと聞いて、カラム内改行をサポートしたフォーマットを想定する香具師がどれだけいるだろうか。 普通は、1Row読めると考えていいんでない? #大容量、速度優先と聞いた段階で1行=1Rowと想定した漏れ。
- 441 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 12:31:37 ]
- >>440
ttp://www.rfc-editor.org/rfc/rfc4180.txt
- 442 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 12:35:24 ]
- >>439
ありがとうございます そっちでやってみます でも結局意味は同じという事でしょうか?
- 443 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 12:37:46 ]
- >>441
つまり、セル内改行はCRLFだということか。 何だ、fgets()でいいじゃん。
- 444 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 12:39:27 ]
- >>442
いいえ。後者は規格不適合です。
- 445 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 12:40:16 ]
- >>443
行末がCRLFで セル内改行はCR「または」LFだ。よく読めよ。
- 446 名前:現実見ない人は気楽でいいね mailto:sage [2007/07/27(金) 12:45:14 ]
- なるほど、MSExcelやOpenOfficeCalcではRFC勧告に則っていないファイルを出力しているわけだ。
#see TEXTDATA それはそれとして、 >>445 CRやLFはDQUOTEで括らないといけないという記述はあるけど(see escaped)、 line breakがCRまたはLFだという記述はどこ?
- 447 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 12:46:14 ]
- >>444
そーゆうことですか ありがとうございます
- 448 名前:445 mailto:sage [2007/07/27(金) 12:55:53 ]
- >>446
このRFCは2005年に出来た新米だからな、MSのOffice従っているわけがないw セル内改行については、解釈方法をRFCでは規定してないっぽいな。 単にCRだのLFだのを入れられるがその場合はクオートしろってだけ。
- 449 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 12:57:20 ]
- へー、Excelだとフィールド内での改行(そう言えばなんで「カラム内改行」なんだろw)はLFなんだ。
で、RFCでは「改行」は「CRLF」だと明記されている。 つまり、RFCを持ち出した御仁はRFCを「よく」読まずに偉そうな御託を並べてたわけね。ふーん。
- 450 名前:デフォルトの名無しさん [2007/07/27(金) 12:57:33 ]
- どなたか >>422 のお相手をお願いします
- 451 名前:445 mailto:sage [2007/07/27(金) 12:58:49 ]
- >>449
すまんね。その通りだ。良く読んでなかったのを認めよう。 で、std::getline()は役に立ちそうかい?
- 452 名前:現実見ない人は気楽でいいね mailto:sage [2007/07/27(金) 13:00:49 ]
- 結論としては、csvと一言で言っても解釈がまちまちってことかい。まぁ、この業界じゃぁ在りがちだがね。
#しかし、「csvはRFCに則ってください」なんて言われた日には涙目だな、こりゃ。
- 453 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 13:01:12 ]
- \r\n
これってなん文字?
- 454 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 13:05:00 ]
- >>422
インクルードパスのサーチルールとプロジェクトは関係ない。 a.hにinclude "b.h"と書かれているのなら、a.h(にとって)のカレントからb.hを探すことになる。
- 455 名前:445 mailto:sage [2007/07/27(金) 13:05:12 ]
- >>452
RFCの規定だと、実質日本語は使えないからなw ま、元の質問者の意図はどうだか良くわからんし、これ以上言っても無駄だな。 セル内改行は要らないというんなら、それでいいんだろうし。 わざわざ「一文字読み」をしている理由を、俺はセル内改行の問題のためだと 推定したっつーだけのこと。
- 456 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 13:06:31 ]
- >>453
Cのソース内で例えば"\r\n"と書けば2文字と解釈される。 #但し、ターミネート文字に注意。 テキストファイルに単純に書けば、4文字と解釈されるだろう。
- 457 名前:449=443 mailto:sage [2007/07/27(金) 13:14:58 ]
- >>455
>俺はセル内改行の問題のためだと推定したっつーだけのこと。 理解した。こちらも言い過ぎ失敬。
- 458 名前:432 mailto:sage [2007/07/27(金) 13:19:51 ]
- なんか荒らしちゃったみたいで申し訳ない
1文字ずつってのは、これ課題なんだけどその際に「1文字ずつ読み込むように」って言われてたからなんだけれどその意図は聞いてないから答えられない・・・申し訳ない とりあえず言われた方法を一通りやってみます レス遅れてすまんかった、そしてありがとう
- 459 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 13:54:16 ]
- >>454
""で指定した場合カレントのstdafx.hを使うみたいなので<>を使って解決しました。 ありがとうございました。
- 460 名前:デフォルトの名無しさん [2007/07/27(金) 14:07:07 ]
- 例外処理というのは結局エラーになりそうなところで
エラー処理を書くってことだと思うんですけど 例外を使うのは単にエラー処理を用意するのと違って どういったメリットなどがありますか? 簡単なサンプルだけではいまいちよくわからなくて すっきりしません。
- 461 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 14:13:37 ]
- win32 apiの例外処理ならadvanced windows の例外処理の章をよむといいかも
- 462 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 14:17:56 ]
- >>460
エラーを検知するコードと、エラーを処理するコードを自然に分離できる。 典型的には、前者がライブラリで後者がアプリケーションの場合。 例外によるエラーの通知は無視したままプログラムの継続ができないことも 大きな特徴。エラーを無視したまま走り続けて不正な処理をすることを防げる。 あと↓ここ読んとけば? pc11.2ch.net/test/read.cgi/tech/1142667446/
- 463 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 14:27:24 ]
- エラーが発生したところで、どうしようもなく、ソフトを異常終了するしかない時に使う。
Cのmallocなどなら戻り値のチェックは絶対に忘れてはいけないし、忘れたらバグの元になり後々面倒になるが、C++のnewなどなら戻り値のチェックは不要。 例外がthrowされ、catchしなければ異常終了する。上の例で、メモリの確保ができなければ、ほとんどの場合継続動作できないからそれで十分。 逆にCのreadのような、ディスクの読み取りエラーのような時は普通使わない。
- 464 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 14:33:18 ]
- >>463
発生したところで異常終了するしかないなら、その場で exit() なり abort() なりすればいいだろう。 細かい read() をいくつも組み合わせるようなプログラムのときは 例外使うと便利だよ。
- 465 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 14:38:11 ]
- いちいちexitやabort書くのも面倒だよ
いっきにまとめてどっかーんなんて使い方ができるのも例外の魅力
- 466 名前:デフォルトの名無しさん [2007/07/27(金) 14:51:36 ]
- すいません。C言語初心者なんんですが、プログラムの作り方がわかりません。
計算を繰り返すのですが、最初に数字を入れて次に、+、-、*、/、=を画面に出力 し、=が選ばれるまで計算を繰り返すプログラムです。=が選ばれれば、合計が出 てくるようにし、そしてまた次の計算をするようにしたいんです。どなたか教えて いただけませんか?
- 467 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 14:54:18 ]
- >>466
自分で作ってみたのを出してみて
- 468 名前:デフォルトの名無しさん [2007/07/27(金) 14:58:04 ]
- どのぐらいの数の変数を宣言したらいいのかわからないんです。
- 469 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 14:59:30 ]
- >>468
必要なだけ作ったらいいよ。まずは書いて動かせ。
|

|