You haven’t actually provided code that exhibits your problem but, to answer your question, ways to pass argv[2]
as a string to a function include
#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";
}
or
#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";
}
The first example above (apart from usage of std
namespace, std::cout
and C++ headers) is essentially vanilla C.
The second example uses the std::string
class, so comparison of strings is possible using the ==
operator. Note that main()
, when calling func2()
implicitly converts argv[2]
into an std::string
(since std::string
has a constructor that permits that conversion) that is then passed to the function.
In both cases, main()
checks argc
to ensure that 2 (or more) arguments have been passed to it.
solved Using int main(int argc, char **argv) in c++ [closed]