[英]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
字符串從1
到argc -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.