回答
不準確,但你可以很容易地接近。
#include <iostream>
#include <vector>
#include <string>
using namespace std;
typedef vector<string> CommandLineStringArgs;
int main(int argc, char *argv[])
{
CommandLineStringArgs cmdlineStringArgs(&argv[0], &argv[0 + argc]);
for (int i = 0; i < cmdlineStringArgs.size(); ++i)
{
cout << cmdlineStringArgs[i] << endl;
}
return 0;
}
這只是用來標準::矢量重載的構造,需要一個begining /結束迭代器對到命令行參數複製到載體中。它跟從那裏的java差不多。
您也可以使用實用方法構建並反轉該向量來轉換參數,但幾乎沒有意義。還有很多包含對象的包,這些包處理解釋命令行開關等。 ACE,POCO,QT等都配備了這樣的設施。
是主要的功能可以採取2個參數
int main(int argc, char* argv[])
凡argc
是參數的個數和argv
包含的參數列表。
例如,如果你運行你的程序爲:
MyProgram.exe hello
然後
argc = 2
argv[0] = MyProgram.exe
argv[1] = "hello"
在C,你的主函數簽名看起來是這樣的:
int main(int argc, char** argv)
。
argc
包含命令行傳入的參數數量。可執行文件的名稱位於位置0,並將其添加到argc
。
argv
包含一個包含參數的字符串數組。同樣,位置0是可執行文件的名稱。
標準C++ main()
簽名是
int main(int argc, char* argv[])
argc
其中表示的命令行參數的計數和argv[]
是原始C字符串保持命令行參數的陣列。 argv[0]
是從命令行調用的可執行文件。
不內置於語言,但它很容易實現:
#include <vector>
#include <string>
using namespace std;
int main(int argc, char *argv[]) {
vector <string> args;
for (int i = 0; i < argc; i++) {
args.push_back(argv[i]);
}
// do something with args
}
你可以使用一個向量來將char數組轉換爲字符串。
#include <vector>
#include <string>
using namespace std;
int main (int argc, char** argv)
{
vector <string> args (argv, argv + argc);
}
如果它不會'使用命名空間標準',我會upvote。 (http://stackoverflow.com/questions/2879555/c-stl-how-to-write-wrappers-for-cout-cerr-cin-and-endl/2880136#2880136) – sbi 2011-05-17 16:44:40
@sbi這不一定是壞事要在.cpp文件中進行。如果這是一個頭文件或比示例1-函數文件更復雜的東西,我可能傾向於同意你的觀點。他不是在同一時間使用Boost或任何其他龐大的圖書館,所以名稱衝突應該不成問題。 – xDD 2011-05-17 16:54:59
這實際上不是將參數傳遞給C++程序的標準方式。 – Pepe 2011-05-17 16:56:27
如果你正在寫一個Win32應用程序,你可以使用GetCommandLineW http://msdn.microsoft.com/en-us/library/ms683156(VS.85).aspx和CommandLineToArgW http://msdn.microsoft.com/en-us/library/bb776391(VS.85).aspx
還有就是CommandLineToArg頁關於特殊處理所需要的,如果你的可執行文件已在路徑中的空格和評論沒有任何論據可能需要處理。
- 1. C:命令行參數與字符串
- 2. Linux的字符串命令爲java
- 3. c socket發送字符串命令
- 4. C++管道字符串郵件命令
- 5. C#+ Discord.NET - 帶字符串的命令?
- 6. 在C中比較字符串文字命令行參數
- 7. c#執行命令行並返回字符串
- 8. 從命令行解密GPG字符串
- 9. 解析命令行參數字符串
- 10. 命令行字符串變量比較
- 11. 執行字符串命令 - 巴什
- 12. Weka命令行和字符串
- 13. Base64編碼「字符串」 - 命令行Windows?
- 14. 命令行匹配部分字符串
- 15. AWK - 執行字符串作爲命令?
- 16. Sed命令替換字符串行
- 17. 觀察字符串命令行
- 18. 要執行命令的字符串?
- 19. 命令行變量/字符串
- 20. CMD.EXE命令行字符串限制
- 21. pyparsing命令行字符串延長部
- 22. 運行jQuery的字符串命令
- 23. C++日語字符命令行輸出
- 24. 將命令行參數拆分爲字符串數組--- Java
- 25. 在命令行工具中解碼Java字符串
- 26. java命令行不能識別字符串
- 27. Java從命令行參數格式化字符串
- 28. 如何使用Java中的命令字符串運行cmd.exe?
- 29. 輸入字符串命令行詮釋在Java中
- 30. 子字符串命令kshell
首先將所有參數拷貝到'std :: vector'中的目的是什麼?同樣的循環可以直接遍歷'argv'。 – sbi 2011-05-17 22:02:28
@sbi - 重點在於它回答了OP的問題。他想要完成的更適合OP。 – Duck 2011-05-17 22:34:51
這是無稽之談。索引到'argv'也會回答sean的問題。他沒有問過如何將這些論據轉化爲矢量。你剛剛向他展示了一個不必要的迂迴路線。 – sbi 2011-05-18 13:11:59