0

今夜私が考慮しなければならなかったもう一つの「新しい」こと:

int main(argc, char *argv[])

なぜcmd行から読みたいのかわかりませんが、わかりません。なぜ私はそれを使っgetlineて文字列に読み込めないのですか?またはgetchそれが何か他のものだったら?

答えは、処理するコードの量に関係しているのではないかと思います。このようなもの#include <string>を使用すると、計算能力が低下しますね。

編集:これを振り返って1年、私はかなりばかげていると感じ、大学のプログラムのcmd行入力について実際に教えられたことはありませんでした(私は正しいことを知っています、私はどのようなコースを受講していますか..):)

4

2 に答える 2

2

argcargv標準の入出力とは何の関係もありません。私が言うなら

myapp Drink More Ovaltine

argc4になりargv、プログラムの名前、「Drink」、「More」、「Ovaltine」の順に含まれます。

getline入力ストリームからデータを読み込むだけです。コマンドライン引数は表示されません。argv(とにかく、それらを取得して、に入れない限り、そうではありませstringstreamん。それでも、ポイントは何でしょうか?)

に関しては#include、それはランタイムI/Oとも関係ありません。これは、コンパイル中にCソースファイルを含めるようにコンパイラー(または通常はプリプロセッサー)に指示するためのものです。#include任意のバイナリなどを作成することはできません。(インクルードが完了すると、結果の文字の束は有効なC ++コードを形成する必要があります)。そして、実行時に、ファイルはすでに含まれています-実行時に、アプリはファイルが存在することさえ知らないので、それを読み込むことさえ考えません。

短縮版:

  • argvおよびargcは、アプリの起動に使用されるコマンドラインの内容にアクセスするためのものです。I/Oとはまったく関係ありません。
  • getline実行時にストリームからの入力に使用され、ほとんどすべてのファイルを読み取ることができます。
  • #includeコンパイル時にC++コードを挿入するために使用され、実際にはソースコードにのみ使用できます。

ご覧のとおり、3つのメカニズムは完全に分離されており、無関係であり、一方を他方の代わりに使用することはほとんどできません。

于 2012-12-02T03:42:28.630 に答える
0

ゲームプログラマーなので、なぜcmd行から読みたいのかわかりませんが、わかりません。

通常、GUIプログラムの場合、コマンドラインを介して渡されるものは非表示またはデバッグオプションになる傾向があります。

たとえば、IEには-k、通常の設定では設定できないコマンドラインスイッチがあります。このスイッチにより、IEはキオスクモードで実行され、多くのものが無効になります。IEをキオスクモードで実行すると、他にアクセスできないため、これは通常のユーザーが絶対にやりたくないことです(WindowsをMsIeOSに変えるようなものです)。

--first-runGoogle Chromeには、ユーザー設定を再初期化し、最初の実行設定ダイアログをポップアップするように強制するコマンドライン引数があります。これは、Chromeの設定が破損した場合に非常に便利です。

ゲームは似ています。Halo2には、-windowedフルスクリーンではなくウィンドウでゲームを開始するコマンドライン引数があります。Halo2コマンドライン引数のリストは次のとおりです:http ://support.microsoft.com/kb/830487

コマンドライン引数の使用が考えられない場合は、使用しないでください。それは他の人がそれの用途を見つけることができないという意味ではありません。

さまざまなプログラムについては、「[プログラム名]コマンドライン引数」をグーグルで検索して、存在する場合はそれを確認してください。あなたのように、コマンドライン引数の使用を考えることができない人々によって書かれたプログラムを見つけることができるので、プログラムには何もありません。

于 2012-12-02T04:08:26.247 に答える