檢查argc和argv的標準方法是什麼?在linux中最好的用法是什麼?我如何從C++中的argc和argv中受益?
請提供示例。
「我想要一個複雜的命令行選項,我想在我的應用程序中使用它們」 那就是我的意思。
感謝
檢查argc和argv的標準方法是什麼?在linux中最好的用法是什麼?我如何從C++中的argc和argv中受益?
請提供示例。
「我想要一個複雜的命令行選項,我想在我的應用程序中使用它們」 那就是我的意思。
感謝
P租賃使用boost程序選項http://www.boost.org/doc/html/program_options.html以訪問命令參數。
+1顯示OP在哪裏購買車輪而不是建造一個。 – 2010-06-15 17:27:21
int main(int argc, char* argv[])
{
for(int i = 0; i < argc; i++)
printf("%s\n", argv[i]);
}
工程在C和C++,但在C++中,你應該包括cstdio和c您應該包含了stdio.h。
-1爲推薦printf – 2010-06-15 17:25:11
而不是正確回答實際問題?我不是C++專家,所以請原諒我的無知,但是'printf'有什麼可怕的地方? – Jeriko 2010-06-15 17:28:00
如果問題被標記爲C,那麼printf就可以。但是這個問題被標記爲C++,因此您應該使用爲您提供的類型安全機制,而不是依賴於與其他語言的向後兼容性的語言。 – 2010-06-15 18:00:27
有(至少)兩種方式來寫你main
功能:
int main()
{
}
和
int main(int argc, char* argv[])
{
}
如果你使用第二個選項,那麼你的命令行參數將在argv
,其中有argc
#元素的數量:
#include <iostream>
int main(int argc, char* argv[])
{
for (int i = 0; i < argc; ++i)
{
std::cout << "arg #" << i << ": " << argv[i] << std::endl;
}
}
使用C++流+1。 – 2010-06-15 17:25:41
用於顯示數組語法的+1,如此多的只是「char ** argv」。我知道這是相同的 – pestilence669 2012-04-01 23:55:45
'std :: vector
你想和他們做什麼?
使用的一個簡單的例子是這樣的:
// Get numbers from the command line, and put them in a vector.
int main(int argc, char* argv[])
{
/* get the numbers from the command line. For example:
$ my_prog 1 2 3 4 5 6 7 8 9 10
*/
std::vector<int> numbers(argc-1);
try
{
std::transform(argv+1, argv+argc, numbers.begin(),
boost::lexical_cast<int, char*>);
}
catch(const std::exception&)
{
std::cout << "Error: You have entered invalid numbers.";
}
}
這取決於你正在嘗試做的。如果你有很多類型的參數等等。那麼最好使用類似boost program options
的東西。
+1爲std :: transform – 2010-06-15 17:26:38
你是什麼意思「檢查?」無論你有'int main()'還是你有'int main(int argc,char * argv [])''。如果你有前者,你就沒有參數向量,如果你有後者的話。 – 2010-06-15 17:16:11
你想完成什麼?一堆簡單的參數?複雜的命令行選項? – Cascabel 2010-06-15 17:16:45
非常不清楚的問題。您不必檢索argc/argv - 它們作爲參數傳遞給'main()'。 – 2010-06-15 17:16:46