您還沒有實際提供表現出你的問題,但代碼,回答你的問題,如何通過argv[2]
作爲一個字符串轉換爲功能包括
#include <cstring>
#include <iostream>
void func(const char *s)
{
// treat s as a zero terminated string
if (std::strcmp(s, "Hello") == 0)
{
std::cout << "You said hello\n";
}
}
int main(int argc, char **argv)
{
if (argc >= 3)
func(argv[2]);
else
std::cout << "You have not supplied an argv[2]\n";
}
或
#include <string>
#include <iostream>
void func2(const std::string &s)
{
if (s == "Hello")
{
std::cout << "You said hello\n";
}
}
int main(int argc, char **argv)
{
if (argc >= 3)
func2(argv[2]);
else
std::cout << "You have not supplied an argv[2]\n";
}
上面的第一個例子(除了std
命名空間,std::cout
和C++頭的使用)基本上香草C.
第二示例使用std::string
類,所以串的比較是可能使用==
運營商。請注意,main()
在調用func2()
時隱含地將argv[2]
轉換爲std::string
(因爲std::string
具有允許進行轉換的構造函數),然後將其傳遞給該函數。
在這兩種情況下,main()
都會檢查argc
以確保已將2個(或更多)參數傳遞給它。
您不能將指向char的指針數組作爲字符串傳遞給某個類。 – ForceBru
你能編輯你的問題以包含你有問題的代碼嗎? –
編寫'argv'類型的常用方法是'char * argv []'。通過這種方式,你可以很容易地看到你可以編寫'argv [2]'來訪問程序的第二個參數,然後你可以使用它的一個構造函數將它轉換成一個'std :: string'。請注意,'argv [0]'存儲程序開始的名稱。 –