在C++中我有一個主要功能與如何在main中指向char * argv []?
int argc, char * argv[]
我需要另一個函數來訪問數據argv[]
(即參數)。
我將聲明一個全局變量,一個指向char **argv
的指針。
我該怎麼做?
在C++中我有一個主要功能與如何在main中指向char * argv []?
int argc, char * argv[]
我需要另一個函數來訪問數據argv[]
(即參數)。
我將聲明一個全局變量,一個指向char **argv
的指針。
我該怎麼做?
應該避免全局變量,你應該更喜歡傳遞參數。無論如何,你可以只使用:
char **global_argv = NULL;
int main(int argc, char * argv[]){
...
global_argv = argv;
...
}
一個更好的辦法是:
void my_fun1(int argc, char **argv); // Passing all the program arguments
void my_fun2(char *arg); // Passing just the one you need
int main(int argc, char * argv[]){
...
my_fun1(argc, argv);
my_fun2(argv[3]); // Supposing you need the 3rd parameter (fourth on argv)
...
}
從來沒有任何理由使用全局變量。如果你不能將它作爲參數傳遞,出於某種奇怪的原因未知,那麼至少將'global_argv'聲明爲'static'。 – Lundin
在C++中,通常*處理argv
最好的辦法是這樣的:
int main(int argc, char **argv)
{
std::vector<std::string> args(argv, argv + argc);
}
現在你具有args
,正確構造的std::vector
將argv
的每個元素保存爲std::string
。看不到醜陋的C型const char*
。
然後,您可以根據需要傳遞此向量或其某些元素。
*它攜帶內存&時間開銷動態分配每個argv
字符串的一個副本。但是對於絕大多數程序來說,命令行處理並不是性能關鍵,而且增強的可維護性和穩健性非常值得。
只要將它作爲參數傳遞給第二個函數... –
...或者只是將各個參數(例如'argv [1]','argv [2]'等)作爲單獨的'const char * '參數根據需要。 –
一旦進入主char * argv []就像您創建的任何其他變量一樣。你可以傳遞給另一個功能,甚至改變內容等。 – Itachi