2012-01-16 2 views
6

Xcode는 언어의 가능한 멤버 기능에 대한 통찰력을 제공하며, 예를 들어 텍스트 메이트와 관련하여이를 사용하는 것을 선호합니다. 사용할 수있는 유일한 substr 서명이Xcode C++ 개발, 설명이 필요합니다

내가 그러나 이해하는 바로는

enter image description here

, 어떤 i see online 주심으로 string s = "Test string";

서명이 실제로 s.substr(1,2)

string substr (size_t pos = 0, size_t n = npos) const; 

해야한다; Xcode에서 모두 이해되고 작동합니다.

완료 할 때 표시되지 않는 이유는 무엇입니까? (Ctrl-Space)

+0

지금까지 할 수있는 최선의 방법은 버그 보고서를 제출하는 것입니다. 우수한 설명을 위해 – zneak

답변

15

Xcode가 올바르게 완료되었지만 예상 한 것과 다릅니다. 실제로 무의식적으로 질문에 대답했습니다. stringsubstr() 방법에 대한 함수 서명이, 당신이 말한대로입니다 : substr()

string substr (size_t pos = 0, size_t n = npos) const; 

모든 인수가 엑스 코드에 따라서 기본 할당을 가지고, (인수없이) s.substr()이 때문에 삽입 할 유효한 코드 완성입니다 은 정말s.substr(0, s.npos)입니다. 기본 인수가있는 여러 표준 C++ 함수를 사용하여이를 확인할 수 있습니다. 이것을 볼 수있는 가장 쉬운 장소는 모든 STL 컨테이너 생성자입니다.

예를 들어 vector을들 수 있습니다. 우리는 모두 vectorsAllocator 일 수 있지만 대부분의 일반 사용에서는 Allocator이 할당 된 기본 인수가 "충분 함"입니다. 아니나 다를까, vector 생성자에 대한 서명이 있습니다 : 두 경우 모두

explicit vector (const Allocator& = Allocator()); 
explicit vector (size_type n, const T& value= T(), const Allocator& = Allocator()); 

Allocator 인수는 기본 할당을 가지고 있으며, 두 번째에서 T 기본값은 기본 할당이 있습니다. vector를 구성 할 때 지금, 엑스 코드에서 알 수 무엇을 살펴 :

Xcode 4.2.1 Code Completions for vector constructor

제안을 전혀 인수 목록과 실제로 단지 Allocator 취하는 생성자입니다. size_type만을 사용하는 제안은 size_type, TAllocator을 사용하는 생성자 인 실제로 인 입니다.

어떻게 생각 하느냐에 따라 Xcode 버그 일 수도 있고 그렇지 않을 수도 있습니다. 이상적으로는 substr()과 같은 간단한 함수의 기본 인수로 완성을보고 싶지만 STL 컨테이너 생성자의 경우 거의 볼 필요가 거의 없습니다. 아마 옵션이 될 수도 있지만, 나는 이것이 고쳐 졌을 것으로 기대하지 않을 것이다. 나는 기꺼이 당신과 레이더를 찍었습니다.

+1

+1. –

+0

Xcode의 또 다른 버그입니다. – Florian

+0

선호하는 동작에 따라 버그 또는 기능이 있습니다. –

관련 문제