내가 사용하려고하는 문제가 발생하고있어 char** argv
으로부터를 main
. 내 목표는 argv[2]
라는 다른 클래스의 문자열에 전달하는 데 사용 하는 것입니다 Game
. 누군가 내가 사용 argv
하고 다른 클래스에 문자열로 전달할 수있는 방법을 알고 있습니까?
int main(int argc, char **argv)
{
Game game(argv[2]);
game.runsecondmethod();
}
그리고 Game.cpp
:
Game::Game(std::string a)
{
write.filename = a;
}
error, no match for call to (Game)(char*&)
실제로 문제를 나타내는 코드를 제공하지는 않았지만 질문에 답하기 위해 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 (또는 그 이상)의 인수에 전달되었는지 확인합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다