WindowsアプリをC++で作成しています。その際にソート処理が必要なので、標準のSORT.EXEコマンドを使い、パイプ経由でソートの入出力ができるようできました。


問題は、SORT.EXE はコンソールコマンドなので、せっかくWINDOWSアプリにしているにもかかわらず、DOS画面がかってに開いて閉じるので、なんかみっともないです。
このDOS画面を開かない方法はないものでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/12/01 00:14:46
  • 終了:--

回答(2件)

id:shampoohat No.1

shampoohat回答回数347ベストアンサー獲得回数02005/12/01 00:26:44

ポイント5pt

http://www.hatena.ne.jp/1133014347

人力検索はてな - C言語の勉強をしています。SORT.Cのソースコードが欲しいです。それも最速のロジックで作成された一品を参照できる場所を教えてください。仕様はWINDOWSのSORTコマンドと..

http://www.paw.hi-ho.ne.jp/takadayouhei/technic/36.html

qsortに渡す関数ポインタにクラスのメンバ関数を渡したい

あの、すみません、以前の質問に回答したものです。


この回答は質問の趣旨には沿っていません。

ですので、ポイントを返せといわれたら返却いたします。

ちょっと気になりましたので、回答を入れさせてください。


外部プロセスSORT.EXEを起動する必然性はどのくらいあるのでしょうか?

つまり、ソート対象になるデータの量がメモリに収まりきらないなどの特殊な事情があるということでしょうか?


上記の事情がない限り、Cの頃からあるqsort関数で簡単にソートできてしまい、

・外部プロセスを呼び出す必要がなくなる。

 → 速い

 → 格好悪くない

 → 環境に依存しなくなる

というメリットが得られます。


手順は、

0. 比較関数を用意する

1. ソートしたいデータを配列に入れる

2. qsort関数を呼び出す

の3手順で、極めて簡単です。


URL2が、Cでの利用法の例。

URL3が、C++でのクラスのメンバ関数を、qsortの引数にする方法です。

(特にメンバ関数に拘る必要がなければ、クラスに属さないCの頃からある普通の関数で良いと思います)


ご存知の上で質問をされていたのでしたら失礼しました。

id:goldman

入力データの容量はおおよそ、6〜10GBです。メモリは4G積んでいるので、残り6GBをテンポラリファイルで処理してくれる SORT.EXEを採用した次第です。

SORT.EXEは、10GBでもちゃんとソートしてくれるんでありがたいのですがねぇ

2005/12/01 00:39:41
id:jouno No.2

jouno回答回数280ベストアンサー獲得回数02005/12/01 00:53:15

ポイント45pt

http://homepage1.nifty.com/MADIA/vc/vc_bbs/200410_04100027.html

DOS�R�}���h���E�C���h�E���\���������Ɏ��s��������

CREATE_NO_WINDOWをつかう方法、startupinfo構造体で指定する方法などが紹介されています。

id:goldman

おお〜すばらしい。まさにこれです。いま動作確認とれました。

2005/12/01 01:07:44

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません