簡體   English   中英

如何在 C++ 程序中使用命令行參數?

[英]How to use command line arguments in C++ program?

我知道要使用命令行參數,我必須這樣做。

int main(int argc, char* argv[])

現在,我讀到的大多數有關接受命令行參數的文檔都解釋了這種情況,如下所示:

命令行參數在命令行操作系統(如 DOS 或 Linux)中的程序名稱之后給出,並從操作系統傳遞給程序。

所以我知道打開我的程序的唯一方法是像我一樣正常打開它,要么開始調試,要么打開 exe 文件

現在看來,要使用命令行參數,程序必須以不同的方式打開,使用命令行(例如 Windows 命令提示符),然后在其后寫入參數。

所以我的問題是

如何使用命令行打開我的程序,以及如何在程序名稱后輸入參數?

為簡單起見,我假設您使用的是 Windows 7。

最簡單的方法是打開一個 DOS 框,然后將您的應用程序拖放到它上面。 這將插入可執行文件的路徑。 之后,您可以開始輸入希望傳遞的命令行參數。 它最終應該看起來像這樣:

C:\Users\cscott> "C:\Users\cscott\Documents\myApp.exe" argument1 argument2

注意:正如評論中提到的,這在 windows vista 上不起作用,這是我在撰寫本文時不知道的事實。

我將假設您使用的是 IDE,我會大膽猜測它是 Visual Studio。 如果我是對的,有兩種方法 - 一種,打開包含已構建的可執行文件的文件夾 - 默認情況下它將位於 {Solution Directory}/{Project Directory}/bin/{Build Configuration} 中。 在那里運行命令行。 另一個選項是打開項目屬性,在“調試”選項卡下(在 VS 2010 中 - 它因版本而異)將命令行標志放在標有“命令行參數”的框中。

將參數傳遞給程序的一些方法:

  • 打開命令提示符(如 Windows 上的cmd.exe或 PowerShell),然后鍵入: your_program.exe arg1 arg2 arg3
    您可以在快捷方式或腳本(如批處理或 sh 腳本)中執行相同的操作。

  • 在 IDE 中編輯運行配置。
    例如,Eclipse 允許您為每個運行配置單獨設置命令行參數。 這在開發和調試過程中很有幫助。

  • 在 Windows 上,將文件拖放到可執行文件上。 拖動文件的文件名將作為命令行參數傳遞。

  • 在 Windows 上,將文件擴展名與文件類型( assoc命令)相關聯,並將該文件類型與運行程序的命令( ftype命令)相關聯。 現在,當打開這樣的文件時,無論是在命令解釋器中還是通過雙擊,幕后發生的事情是您的程序以該文件的路徑作為參數運行。

  • 從另一個程序以編程方式運行您的可執行文件並將參數作為變量傳遞。
    例如在 Python 中:
    subprocess.call(['my_program.exe','arg1','arg2'])

在 Windows 中,您必須使用命令提示符導航到您的可執行位置,您可以通過說Myexe.exe first_arg second_arg來運行它。

或者,您可以右鍵單擊您的 exe 文件,然后在文件設置中指定一些命令行參數,以便在雙擊打開它時提供給它。

另一種方法是編寫一個簡單的批處理腳本,該腳本只調用您的程序,如C:/Full/Path/To/Your/Program/app.exe first_arg second_arg並運行它。

在 Visual Studio 或您首選的 IDE 中,您可以在項目設置中選擇在從 IDE 內部執行時為您的程序指定一些命令行參數。

這是我在 linux 中使用的一個簡單示例

./myprogram args1 args2

你可以像這樣解析它

int
main (int argc, char **argv)
{
  if (argc >= 2) {
     std::string param(argv[1]);
  }
  ///etc
}
<path of your program> <Arguments separated by space>

您可以通過打開命令提示符和 cd 到路徑並輸入 exe 名稱后跟您的參數來執行此操作:

 eg: bob.exe bob dylan

你的exe是bob,兩個參數是bob和dylan...

...或者您可以創建一個快捷方式並右鍵單擊,選擇屬性,快捷方式並將參數添加到目標字段的末尾。

"C:\bob.exe" /bob dylan

您的 IDE 中可能有一個選項,具體取決於它是什么。

您可以在從命令提示符啟動時編寫,您可以創建快捷方式並在名稱后添加參數,您可以在調試時在某些 IDE 中添加參數,或者您可以使用某些參數與其他程序一起調用您的程序。

有些東西會啟動你的程序。 這取決於傳遞它的參數。 所有常用的 shell 都會解析命令行(盡管並不總是以相同的方式)以向您呈現參數。 在 Windows 下,左鍵單擊桌面和任務欄中的按鈕將打開一個配置窗口,其中有一個“快捷方式”選項卡,您可以在其中輸入命令行作為“目標:”。 Unix 下的 rc 文件(啟動時執行)基本上是 shell 腳本,cron 文件(定時啟動)也采用命令行(而不僅僅是一個孤立的命令)。 等等。

在其他上下文中,您可以將文件類型(擴展名)映射到單擊該類型文件或下載該文件時將執行的命令。 在這種情況下,如果不出意外,您至少將獲得文件的完整路徑。

在您只能獲取文件名的少數情況下,編寫自己的 shell 腳本以在調用程序時添加額外的參數是相當容易的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM