1 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 00:25:51 ] エスケープシーケンスやWin32APIなどの環境依存なものでもOK。 ただしその場合、質問者は必ず環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.63【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1231499251/ 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm ◆ソースのインデントについて 半角やTABでのインデントはスレに貼ると無くなります。 そのため、アップローダーに上げるのが最も良いですが、 直接貼るのであれば、全角空白か に置換しておくことをお勧めします。
384 名前:デフォルトの名無しさん [2009/03/14(土) 21:11:37 ] わかりました。 後者の場合stdの中で宣言するというだけなので、Main関数を入れたりとかは できないということですね。 ありがとうございました。
385 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:22:45 ] std 名前空間内に自分で宣言を追加してはいけない。 規格上未定義動作になる。
386 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 00:23:57 ] std::swapの特殊化は置いてもいいけどね。
387 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 00:31:35 ] std::swapの特殊化じゃなくて、テンプレートの完全特化が許されてるってことね
388 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 01:03:47 ] stringのvectorにファイルを一行づつ読み込んで、まとめて別のファイルに書き込むというプログラムを作ってるんですけど エラーチェックは↓見たいな感じで十分ですかね? #include <iostream> #include <fstream> #include <vector> #include <string> using namespace std; void read(char *file, vector<string> &lines); void write(char *file, vector<string> &lines); int main(void) { vector<string> lines; read("C:/Work/from.txt", lines); write("C:/Work/to.txt", lines); cout << "正常終了" << endl; return 0; }
389 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 01:04:39 ] void read(char *file, vector<string> &lines) { ifstream ifs(file); if(!ifs.is_open()){ cout << "コピー元ファイルを開けない" << endl; exit(EXIT_FAILURE); } while(ifs.good()){ string line; getline(ifs, line); lines.push_back(line); } if(!ifs.good() && !ifs.eof()){ cout << "読み込み途中でエラー" << endl; ifs.close(); exit(EXIT_FAILURE); } }
390 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 01:05:31 ] void write(char *file, vector<string> &lines) { ofstream ofs(file); if(!ofs.is_open()){ cout << "コピー先ファイルを開けない" << endl; exit(EXIT_FAILURE); } vector<string>::iterator i = lines.begin(); while(ofs.good()) { ofs << *i; if(++i == lines.end()) break; ofs << endl; } if(!ofs.good() && !ofs.eof()) { cout << "書き込み途中でエラー" << endl; ofs.close(); exit(EXIT_FAILURE); } }
391 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 01:39:45 ] while (!feof()) {} と同じ匂いを感じる。 ところで、 while (...) { string str; ... } より string str; while (...) { ... } の方が、コンストラクタとデストラクタが毎回走らない分、コスト的には良いよね? でも、スコープを限定した方が可読性等の面からは好ましいよね? どっちが良いのかな。
392 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 01:44:22 ] その辺を言い出したらvectorから見直しだけどな。
393 名前:デフォルトの名無しさん [2009/03/16(月) 02:11:37 ] >>391 {string str; while(...){...}}
394 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 02:26:56 ] for(string str; ifs.good();)
395 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 02:36:54 ] 初期化がループに依存しないならコンパイラが良きに計らってくれると思うよ。
396 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 02:40:10 ] getline(,)後!ifs.good()でも1回push_backしちゃうのはマズくないか。
397 名前:デフォルトの名無しさん [2009/03/16(月) 07:38:25 ] VC++9での質問です。 あるライブラリをインクルードする必要があるのですが、 ソース中に #pragma comment(lib, "ライブラリ名") と書くと、LNK2005のエラーが出ます。でも、 プロジェクト→プロパティ→リンカ→追加のライブラリ のところに「ライブラリ名」を書くとLNK2005は出なくなりコンパイルできます。 リンクの順序が関係してるのかと思ったのですが、よくわかりません。 どういう基準で方法を選べばいいですか?
398 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 07:41:35 ] >>397 ライブラリのパスを通せばいいと思う
399 名前:デフォルトの名無しさん [2009/03/16(月) 07:50:49 ] >>398 ありがとうございます。 ライブラリは見えてます。LNK2005は、同じライブラリを複数回リンクしようとした、 というエラーみたいなのです。自分の場合、 unsigned int *a = new unsigned int(100); みたいな行がエラーになります。でもLNK2005が出ないやり方でリンクすると この行も問題なくコンパイルされます。 書いてて思ったのですが、追加のライブラリのところにライブラリ名を書くと、 Visual Studioがリンクの順序を勝手に調整してくれるんですかね?
400 名前:デフォルトの名無しさん [2009/03/16(月) 13:38:45 ] あるテーブルより、KOJIN_ID(数値型8桁)を一旦ホスト変数H_KOJIN_IDに入れ それを11桁の文字型として出力しなければいけないのですが(余った桁はスペースで埋める) 下記のようにsprintf関数を使ってH_KOJIN_IDから、ファイル書き出し用構造体outの項目KOJIN_IDに セットするときに、現状のままだと余った桁に0が入ってしまいます。 データセット部 sprintf(out.KOJIN_ID,"%11.11ld",H_KOJIN_ID); 余った桁に半角スペースが入るようなsprintf指定方法はありませんか?
401 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 14:41:57 ] >>399 もしかして複数ファイルに分けてる? スタティックライブラリの関数名がダブってるような気がする
402 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 14:44:55 ] >>400 いってる意味がよく分からないけど %11ld または %-11ld でいいのかな?
403 名前:デフォルトの名無しさん [2009/03/16(月) 16:44:14 ] 400です。 おかげさまで解決です。
404 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 16:54:03 ] おかげさまってマルチでよそで答えもらっただけだろ。
405 名前:デフォルトの名無しさん [2009/03/16(月) 20:22:15 ] std::cinで矢印キーの入力を取得することはできますか?
406 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 20:29:07 ] 質問です WM_NCHITTESTをフックしたいのですが SetWindowsHookEXの中のどの項目ならフックできるでしょうか?
407 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 22:16:04 ] >406 >The WM_NCHITTEST message is sent to a window when the cursor moves より、このメッセージは Send される。 従って WH_CALLWNDPROC か WH_CALLWNDPROCRET だが、いずれもメッセージを調べるだけで変更することはできない。 別途処理したいならサブクラス化とかが必要。
408 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 22:17:02 ] っつーか、Win32API質問箱の管轄だな。
409 名前:406 mailto:sage [2009/03/16(月) 22:53:13 ] >>407 ありがとうございます。 メッセージの変更ができなかった謎も解けました。
410 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 00:11:37 ] const stringのイテレーターってどうやって宣言するんでしょうか? std::_String_const_iterator<char,std::char_traits<char>,std::allocator<char>> でイテレーターを宣言すればうまくいくんですが、もっとスマートな書き方が知りたいです
411 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 00:13:31 ] >>410 #include <string>
412 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 00:15:06 ] >>411 #include <string>はちゃんとしてます
413 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 00:17:51 ] >>412 ならイテレータの宣言は済んでる。 何がしたいのかよくわからん。 std::string::const_iterator i; みたいにイテレータ型の 変数を宣言したいってこと?
414 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 00:19:17 ] あ、const_iteratorってやるんですね。解決しました。ありがとうございます
415 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 00:19:30 ] const stringのイテレータという言い方は無い。 stringのconst_iteratorならstd::string::const_iteratorで宣言できる。
416 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 17:14:42 ] newが失敗するのってメモリが足りない時以外にどんな状況が考えられますか?
417 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 17:27:57 ] 何をnewするかに拠る
418 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 17:42:35 ] コンストラクタがエラー投げてることもある
419 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 17:46:41 ] そもそもメモリが足りてなくても失敗するとは限らない。
420 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 18:52:06 ] STLの出す例外一覧みたいなのってありませんか?
421 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 19:54:38 ] これ格納すればあらゆる例外投げてくれるよ struct Hoge{ Hoge(){throw new MyFavoriteException;} };
422 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 16:14:20 ] そうかなあ
423 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 02:41:10 ] VC++でCGIを作ってます(ただの興味本位です HTMLの文字コードはUTF-8にしたいので、文字列リテラルの文字コードをUTF-8にするために、 ソースコードをUTF-8で保存して、コンパイルしました。 すると「現在のコードページで表示できない文字を含んでます。Unicode形式で保存してください。」という警告が出て、 更に文法エラーが出てきてコンパイルできませんでした。 ソースコードにBOM付けてコンパイルしたら成功しましたが、出力された文字列は何故かShift_JISになってました。(VC++が日本語版だから? 文字列にUTF-8を使うことは不可能なんですか?
424 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 03:11:19 ] ソースファイルの文字コードとプログラムの出力は別物 ソースはShift_JISでもUTF-8でもコンパイルすれば内容は同じ で、出力をUTF-8にするためにはプログラムで文字列を組み立ててから 最後にUTF-8に自力で変換してやらなくてはいけない UTF-8への変換はWin32APIを使う必要がある たぶんIMultiLanguage2のあたりつかえばできると思うので検索して調べてみてくれ あと、Shift_JIS以外の文字コードをstdoutに出力するなら、stdoutをバイナリモードに する必要があるような気がするので、fprintfとかfwriteの前に以下のようなコードが必要かも setmode( fileno(stdout), O_BINARY );
425 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 04:28:22 ] 2005以降なら、fopenなどでccs=UTF-8を付加すればいいのではと思う
426 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 12:00:07 ] あー、fopenなんてここ何年も使ってないからすっかり忘れてたわ
427 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 13:06:36 ] 環境依存しない方法で変換するにはどうすればよかろうの?
428 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 13:15:48 ] 無理 環境ごとに#ifdefしまくるのが精一杯
429 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 13:45:03 ] CGIやるならLinuxだろ >>425 stdoutには使えないよね
430 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 15:38:25 ] ソースが Shift_JIS なら、環境に依存してない。
431 名前:デフォルトの名無しさん [2009/03/20(金) 16:55:09 ] Visual Studioで画面に複数のソースを表示させる方法ってありますか? Source.cppとSource.hを横に並べて表示したいんですが、、
432 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 17:01:15 ] タブを右クリ→垂直タブグループの新規製作
433 名前:デフォルトの名無しさん [2009/03/20(金) 17:04:01 ] すごい、出来ました! ありがとうございました。
434 名前:デフォルトの名無しさん [2009/03/20(金) 23:07:02 ] page4.auctions.yahoo.co.jp/jp/auction/d91264064
435 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 13:22:55 ] opendialogを使うと ShellExeCuteを使いバッチファイルを起動すると パスが見つからなくなってしまいます。 opendialogを使わない状態でバッチファイルを起動すると大丈夫でした。 何かディレクトリを指定するようなコマンドがあったら教えてください。
436 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 14:24:00 ] chdir
437 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 14:42:32 ] 436>> バッチファイルのほうで探したら見つかりました ありがとうございます。
438 名前:デフォルトの名無しさん [2009/03/21(土) 20:56:55 ] Visual C++の質問なんですが、 新規プロジェクトを作成した後、ソリューションエクスプローラーでフォルダを追加して、そのフォルダの中に ソースファイルを追加しました。でも実際にはそのフォルダは作られてなくて、プロジェクトのフォルダのトップに 全部のファイルが存在してました。ソリューションエクスプローラーからフォルダを追加しては駄目だったので しょうか?
439 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 20:59:56 ] ファイルシステム上のフォルダとは別物だ。
440 名前:デフォルトの名無しさん [2009/03/21(土) 21:03:40 ] >>439 ええーそうなんですか、、、と思ってもう一回見てみたら追加されるのはフィルタになってました。 じゃあ、プロジェクト内にソースを入れておくフォルダを作るにはどうすればいいですか? ソースを追加するときに新規フォルダを作っても、ソリューションエクスプローラからは見えません でした。 フィルタって何の意味があるんだろう。。
441 名前:デフォルトの名無しさん [2009/03/21(土) 21:10:07 ] 自己レスです。 自分なりに考えてみたのですが、ソース追加時に新規フォルダーを作ってそちらにソースを追加した場合、 フィルターもあわせて設定すれば、やりたいことができそうです。 でも途中でフォルダ名を変更しようとすると面倒そうですが、、、。 プロジェクトのトップに全ファイルが置かれるのがいやなのですが、皆さんはどうされてますか?
442 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 21:21:54 ] hoge/srcフォルダにソースもヘッダもぶち込む
443 名前:デフォルトの名無しさん [2009/03/21(土) 21:51:18 ] >>442 ありがとうございます。なんか、そっちのほうがいいのかと思えてきました。 自分のプロジェクト内には、DaemonとCommandという2つのフォルダがあって、それぞれの中に PrintInfo.cppというのがあるのですが、ビルド時にPrintInfo.objというのが重なってるせいか、 リンクでエラーになります。(LNK2019とかLNK2001とか) 同じ名前のソースが1つのプロジェクト内にあると、フォルダをわけてもよくないのでしょうか? 何度もすいません。
444 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 22:13:52 ] image.space.rakuten.co.jp/lg01/91/0000075291/80/img97a425ffzik9zj.jpeg
445 名前:デフォルトの名無しさん [2009/03/21(土) 22:23:20 ] >>444 浦賀湾のあたり? 解決しました。 出力ファイルのオブジェクトファイル名を変更すればできました。 ただ、両方のPrintInfo.cppに対して、オブジェクトファイル名を手動で指定 しないとだめなのが、分かりにくかった。 片方だけ手動で変更すればいいんじゃないか、、と思ったんですが。 ありがとうございました。
446 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 22:33:42 ] >>444 テラナツカシス
447 名前:デフォルトの名無しさん [2009/03/22(日) 13:01:45 ] 昨日VSいれてみました。いきなり分りません。 System::Object^ の^ってなんですか
448 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 13:12:49 ] >>447 C++の入門書買ってくるか入門サイトを見て最低限の知識をつけろ
449 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 13:12:55 ] 検索すればわかることだと思うけれど、 www.google.com/search?hl=en&q=VC%2B%2B+%E3%82%AD%E3%83%A3%E3%83%AC%E3%83%83%E3%83%88&btnG=Search&lr=lang_ja の3番目
450 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 13:27:51 ] C++builderでTreeViewを使っているのですが、子を持つノードだけそのままの位置にして 他のノードのみをソートしたいのですが、alphasortだと全て並び変わってしまい うまくいきません。 何か良い方法があったら教えてください。
451 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 13:34:07 ] C++の入門書には載ってないだろうな。 C++/CLIの入門書嫁。
452 名前:デフォルトの名無しさん [2009/03/22(日) 13:54:28 ] CLIだったのか。どうりで。 ありがとね。
453 名前:デフォルトの名無しさん [2009/03/22(日) 15:29:42 ] int hoge(int n) { return n; } int hoge(const int n) { return n; } int hoge(int &n) { return n; } int hoge(const int &n) { return n; } だと、2番目だけコンパイルできないんですけど、どうしてなんでしょうか。 呼び出すときに、結局intを丸ごとコピーして引数に渡すので、呼び出し元では int であろうがconst int であろうが区別していないのでしょうか。
454 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 15:41:21 ] >>453 そう。関数引数の型としてはトップレベルの const は無視され、区別されない。 ただし定義においてはローカル変数への const と同様に働く。
455 名前:デフォルトの名無しさん [2009/03/22(日) 16:58:39 ] 暗号の本で一通りのアルゴリズムのようなものは理解したのですが、 Cに組み込むにはどうすればいいのでしょうか? アセンブリはやったことがないのですが、Cプログラムを逆アセンブルすると簡単にバレたりしませんか? たとえば全てのバイトにn加算するという暗号化を施す場合、 その加算するという処理、nという数値が逆アセンブルによって解ると思うのですが、 そうさせないために何か対策する必要はないのでしょうか?
456 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 17:04:17 ] アルゴリズムが判明して脆弱になるような暗号は、その時点で脆弱なのです。
457 名前:デフォルトの名無しさん [2009/03/22(日) 17:21:23 ] 例が悪かったですね。 AES等安全性の確立されたアルゴリズムを使うことを前提とします。 ある暗号化されたデータをプログラムで読み込み複合化する場合、プログラムコードに鍵を含める必要がありますよね。 その鍵は逆アセンブル等で簡単に解ったりしないんですか?
458 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 17:24:55 ] >>457 分かります AES暗号化を使っていることが分かるだけでも どこを調べればいいか分かってしまいます ある程度以上は諦めるしかないです
459 名前:デフォルトの名無しさん [2009/03/22(日) 18:09:08 ] MFCでアプリを作っているのですが、 動作確認のため、コンソールも起動しております。 _cprintf_sや_cscanf_s関数を使っているのですが、 _cscanf_s関数でバックスペースのキーを入力すると、 プログラムが無限ループで暴走してしまいます。 普通のscanf()関数のようにバックスペースで一つ前の文字を削除するには どうすればよいでしょうか?
460 名前:デフォルトの名無しさん [2009/03/22(日) 18:53:39 ] #include <iostream> int main(){return 0;} というプログラムなんですが、プロジェクトを新規作成するときに、 (1)最初から空のプロジェクト (2)Win32プロジェクトを選択して、空のプロジェクト という2つの方法でやると、(1)はコンパイルできるのですが、(2)だとコンパイルが 通らず、LNK2019というエラーになります。 この2つの方法って何が違うのでしょうか?
461 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 18:55:39 ] Win32プロジェクトはGUIプログラム用です
462 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 19:01:50 ] >>460 プロジェクトのプロパティをよく比較するとわかるが、いくつかの初期設定が異なっている。 そのエラーの元になっている違いはエントリポイントの違い。 Win32プロジェクトでは、main()の代わりにWinMain()という関数からプログラム開始する。 他にもコンソールが表示されるかとかプリプロセッサ定義とか諸々も違う。
463 名前:デフォルトの名無しさん [2009/03/22(日) 19:24:03 ] >>461-462 ありがとうです。 でもmainをWinMainに書き直しても駄目でした。 >他にもコンソールが表示されるかとかプリプロセッサ定義とか諸々も違う。 本当にほかにも色々違うんですね。
464 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 20:09:48 ] #include <windows.h> int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {return 0} これが一応の最小プログラムね Windowsプログラミングでは初めて見る型がたくさん出てくるけど ほとんどtypedefしただけだから、惑わされずに命名規則と元の型を覚えるといいよ
465 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 20:15:12 ] >>464 何のためのtypedefだよ…
466 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 20:23:08 ] typedef元の型が変化しても書き直す必要をなくすため
467 名前:デフォルトの名無しさん [2009/03/22(日) 20:26:11 ] 個人的にはAPIENTRYの方が好きだなあ
468 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 22:28:20 ] 可読性のためだろ
469 名前:デフォルトの名無しさん [2009/03/23(月) 00:16:56 ] memcpy.asmの mov [edi],al ;U - write second byte to destination でエラーが発生してしまいます。なぜでしょうか? 以下 プログラムです。 class ErrorDiffusion{ public: ErrorDiffusion(int campussize); ~ErrorDiffusion(); void Upperandlowerreversing(int width,int height,unsigned char *Grey); private: unsigned char *Output; }; //上下反転 void ErrorDiffusion::Upperandlowerreversing(int width,int height,unsigned char *Grey) { int i,flag=1; printf("上下反転\n"); for(i=0;i<height;i++) { //printf("memcpy mae\n"); memcpy(&OutPut[(height-flag)*width],&Grey[i*width],width); //printf("%d loop\n",i); flag++; } } //ここで関数を呼んでいます。 errordiffusion.Upperandlowerreversing(width,height,&Grey[0]);
470 名前:デフォルトの名無しさん [2009/03/23(月) 00:47:52 ] private: unsigned char *Output; にして、コンストラクタで、メモリを確保していて NULLにはなっていないのですが・・。privateへのアクセスは、普通に Outputでいいはずだとおもうのですが違うのかな?
471 名前:デフォルトの名無しさん [2009/03/23(月) 01:09:47 ] 自己解決しまsちあ
472 名前:デフォルトの名無しさん [2009/03/23(月) 09:55:51 ] ifstream ifs(filename, ifstream::binary); Windows環境で、Ifstreamの読みこみで、Ifstream::binaryを書かなかったら どうしてだめなのでしょうか?
473 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 10:16:20 ] テキストファイルの読み込みとか、書かなくてもいい場合があるじゃん。 Cの"r" "rb" と同じ関係。
474 名前:デフォルトの名無しさん [2009/03/23(月) 10:58:52 ] >>473 ありがとうです。テキストファイルの読み込みの場合は書かなくていいんですね。 ついでにあと1個質問させてください。 Ifstream.seekg()で、 Ifstream.seekg(0,ifstream::end) Ifstream.seekg(ifstream::end) はどうちがいますか?どっちもコンパイルできるし、意味も同じっぽいんですけど、、、
475 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 11:02:37 ] >>474 省略時はどの値を渡したのと同じってのを意識するといい。
476 名前:デフォルトの名無しさん [2009/03/23(月) 11:36:04 ] >>475 なるほど。 省略時は0を渡したのと同じですね。
477 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 11:46:00 ] 念のため書くけど、省略時にどの値を採用するかはその関数を書いた人が決めるのよ。 さっきのIfstream::binaryも同じ
478 名前:デフォルトの名無しさん [2009/03/23(月) 12:35:15 ] >>477 本当ですね。 VC9++で試したら、ゼロじゃなかったです。 どういう値になっているのか調べられなかったけど、 ちゃんと読めてなかったです。
479 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 12:50:29 ] ああそうか、binary modeとcooked modeはCP/M、ひいてはMS-DOSの ためにC言語時代から受け継いでいる伝統だったな unix系は意識不要
480 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 14:42:51 ] おまえFTPとか知らないだろ
481 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 14:54:43 ] File Transfer Proturk がどうかなさいましたか?
482 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 15:09:04 ] TDateTime now = Date(); String hiduke=DateTimeToStr(now); SaveDialog1->FileName=hiduke; 日付をFileNameのところに表示したいのですが、上記のようにやっても うまくいきません原因の分かる方教えてくださいー。
483 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 15:39:00 ] 482です 解決しました 2009/03/23の /がダメだったようです。
484 名前:デフォルトの名無しさん [2009/03/23(月) 22:00:05 ] free(array); すると、プログラムが止まってしまいます。 メモリは確保しているし、なぜfreeするとエラーになるかわからないです メモリのエラーはerrorno でチェックしろとかいてあったのですが どうやってチェックすればいいかサンプルコードをください