동안 , ss
은 std::string*
을 사용하고 std::stringstream
을 반환하는 함수에 대한 선언입니다.대부분의 성가신 구문 분석은 일부 C++ 03 코드를보고, 나는 나를 혼동 <em>가장 골치 아픈 구문 분석</em>의 인스턴스를 발견
std::string(argv[0])
은 std::string*
으로 어떻게 파싱됩니까?
직관적으로 나는 argv[0]
이 argv
에 대한 액세스라고 생각했습니다. 함수 선언의 맥락에서, 컴파일러 main
에서 argv
그늘지게 (a 선언argv
라는 함수 파라미터 같은 크기 0의 배열 즉 std::string argv[0]
같은 std::string(argv[0])
해석하므로
이 때문에
는 '는 argv [0]'타입 '명백하게 argv' 0의 배열 크기 때문에 비주얼 스튜디오 2015로 날 컴파일 못했다. argv [1]을 사용하면 같은 결과를 얻을 수 있습니다. 재미있는 질문. –
나는'std :: stringstream ss (std :: string argv []);와 동일하다고 생각한다. 이것은'std :: stringstream ss (std :: string * argv);와 동일하다. –
나는 하나의 지침이 있다고 생각한다. 그것은 하나라는 선언처럼 보인다. 그래서 @ FrançoisAndrieux가 당신의 인스턴스를 std :: string에서 작성한 것과 같이 인스턴스화가 아니라 std : strings 배열에 대한 선언을 대신합니다. – ExOfDe