回答
不準確,但你可以很容易地接近。
#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. c socket發送字符串命令
- 3. 在C中比較字符串文字命令行參數
- 4. c#執行命令行並返回字符串
- 5. 從命令行解密GPG字符串
- 6. 要執行命令的字符串?
- 7. 執行字符串命令 - 巴什
- 8. CMD.EXE命令行字符串限制
- 9. 解析命令行參數字符串
- 10. Weka命令行和字符串
- 11. 運行jQuery的字符串命令
- 12. pyparsing命令行字符串延長部
- 13. 如何從C中的命令行參數讀取「字符串」?
- 14. 從MPI中的命令行參數讀取字符串c
- 15. 如何將命令行字符串轉換爲C++中的hwnd?
- 16. 將命令行參數轉換爲字符串C
- 17. 從命令行參數打印子字符串,C
- 18. C編程從命令行輸入字符串讀取整數
- 19. C#字符串/字符串:像Java中的比較字符串(通過引用)
- 20. Python命令行「字符」返回「字符」
- 21. 令牌化字符串C
- 22. 命令行 - 從前一個命令替換字符串並執行
- 23. Java命令行?
- 24. Python:編寫命令行指令時的字符串格式化
- 25. 在Java中作爲命令行輸入的字符串(多行)列表
- 26. c#執行命令行如命令提示符?
- 27. 逐行讀取命令行的輸出轉換成字符串的在C++中
- 28. 用換行符在bash中命令的管道字符串?
- 29. 命令行 - 將任何字符串轉換爲標識符?
- 30. sed命令來搜索字符串和搜索的字符串
首先將所有參數拷貝到'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