我剛剛練習編碼C++。我知道在Java中,我們可以有一個公共的main方法,它可以讀取輸入文件名作爲字符串數組參數的參數。但我想知道我是如何在C++中執行相同的任務的?如何讀取輸入文件作爲參數在C + +
0
A
回答
0
Java和C++都遵循相同的類C語法。所以它與你在Java中的不一樣。在Java中,您有一個字符串類:
class Test {
public static void main(String args[]) {
for(int i = 0; i < args.length; i++)
System.out.println("Argument " + i + " = " + args[i]);
}
}
C/C++大多使用原始字符數組來存儲字符串。儘管標準模板庫也提供了字符串類,但C++使用本地字符數組來存儲命令行參數。主要功能有兩個變量:
INT ARGC:的命令行參數數量 的char * argv的[]:字符串數組
你也可以說,它可以寫爲char ** argv的,因爲C/C++中二維數組的基本表示,但都表示同樣的事情。在C++上述代碼的等效將是:
#include <iostream>
int main(int argc, char *argv[]) {
for(int i = 0; i < argc; i++)
std::cout << "Argument " << i << " = "
<< argv[i] << std::endl;
return 0;
}
0
你可以用同樣的方法來做,因爲C語言的數組不會存儲它們的長度,所以它作爲一個單獨的參數傳遞。
int main(int argc, char** argv) {
// Read args from argv, up to argc args.
// argv[0] is the name of the program
// argv[1] is the first argument
}
0
的main
功能給你參數計數與實際的參數作爲字符數組的數組。
爲了安全地處理這個問題,您應該首先將此信息轉換爲std::vector<std::string>
。
#include <string>
#include <vector>
int main(int argc, char *argv[]) {
std::vector<std::string> arguments;
for (int index = 0; index < argc; ++index) {
arguments.push_back(argv[index]);
}
}
你會發現,arguments[0]
等於可執行文件的文件名(在理論上,這取決於你使用的系統)。如果您使用的是Windows,並有一個叫做stackoverflow.exe
的可執行文件,然後用
stackoverflow.exe one two
啓動它會導致含{ "stackoverflow.exe"
,"one"
,"two" }
arguments
。
相關問題
- 1. 讀取輸入文件C
- 2. 將文件輸入作爲C++中的操作碼讀取
- 3. 如何讀取Hadoop Sequentil文件作爲Hadoop作業的輸入?
- 4. 如何從輸入文件C++讀取多行數據變量?
- 5. 在讀取輸入文件
- 6. 將文件作爲輸入流讀取時如何獲取Excel文件名
- 7. 如何在C讀取文件輸入名稱
- 8. 從文件中讀取輸入C
- 9. 從C++文件讀取,將輸入
- 10. 如何用Java讀取輸入文件
- 11. 如何從文件讀取輸入?
- 12. hadoop如何讀取輸入文件?
- 13. 讀取.txt文件輸入不工作
- 14. 如何使用xml文件作爲腳本的參數輸入
- 15. 作爲數組讀取輸入
- 16. 獲取作爲文件輸入接收的參數類型
- 17. 如何輸入在命令行參數中讀取的文件名?
- 18. C++如何讀取和寫入文件
- 19. 如何在C++中將數字讀入輸出文件
- 20. 在讀取輸入文件時更新C數組
- 21. 在C++中讀取文件時輸入文件的位置?
- 22. 在C++中讀取輸入
- 23. 在C中讀取輸入
- 24. 從外部文件讀取參數 - C#
- 25. 將輸入寫入文件並從C++中讀取文件
- 26. 如何和輸入文件到apk可以從C++讀取?
- 27. C++。如何從文件中讀取並與輸入匹配
- 28. 如何從輸入文件中讀取結構信息c
- 29. 如何在Eclipse中輸入參數作爲參數
- 30. 如何在map-reduce中讀取多個圖像文件作爲hdfs的輸入?
爲什麼argv是另一個指針的字符指針? – Goldie
@goldbergski因爲每個參數都需要'char *',所以要指向'char *'的數組,你需要'char **'。 –