簡體   English   中英

獲取命令行參數作為一個大字符串

[英]Get command line parameters as one large string

我知道我可以得到整個命令行

LPWSTR commandLine = GetCommandLineW();

並從中獲取所有部分

int argv = 0;
LPWSTR* szArglist = CommandLineToArgvW(commandLine, &argv);

但是在啟動時

$ myapp.exe arg1 arg2 arg3

這始終包含可執行文件本身的名稱( myapp.exe arg1 arg2 arg3 )。

如何將所有參數作為一個大字符串( arg1 arg2 arg3 )獲取。

當您說“如何將所有參數作為一個大字符串獲取”時,您實際上是什么意思?

如果您想要用於創建流程的確切參數,您只需調用GetCommandLine並跳過第一個參數。 如果字符串以" you skip直到找到結尾"開頭,否則跳過直到找到空格; while(*cmd > ' ') ++cmd; 或類似的規定。

如果需要在處理后的參數,則需要將所有argv字符串從1argc -1 如果您從main()獲取它們,則處理的含義取決於您的 C 運行時庫。 MSDN 上記錄了CommandLineToArgvW對引號和反斜杠的處理。 由於參數已被處理,您不能使用此串聯字符串啟動其他進程,因為可能已刪除所需的引號。

您可以連接程序中的參數。 下面是一個小片段

int main(int argc, char *argv[])
{
    char concat[100] = ""; // decide size appropriately
    if (argc >= 2)
    {
        for (int i = 1; i< argc; i++)
        {
            strcat(concat, argv[i]);
        }
    }
    ...
}

編輯 - 建議的解決方案是一種快速簡便的輸出,不適用於所有情況。 例如,它不支持 unicode 字符。 如果需要,可以通過為串聯字符串動態分配內存來做得更好。 此外,此解決方案不會在參數之間添加空格。 如果需要,也可以添加。

暫無
暫無

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

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