我非常喜欢
Xcode提供对该语言可能的成员函数的深入了解的方式,并且更喜欢相对于文本伙伴使用它,如果不是因为我今天注意到的奇怪.
当string s =“Test string”时;唯一可用的substr签名如图所示
但据我所知,签名应该是什么i see online
string substr ( size_t pos = 0,size_t n = npos ) const;
确实s.substr(1,2);既被理解也适用于Xcode.
当我尝试方法完成时为什么不显示? (Ctrl-空格)
解决方法
Xcode正确执行完成,但它不是您所期望的.你实际上已经在不知不觉中回答了这个问题.正如您所说,字符串的substr()方法的函数签名是:
string substr ( size_t pos = 0,size_t n = npos ) const;
substr()的所有参数都有默认赋值,因此对于Xcode,s.substr()(没有参数)是要插入的有效代码完成,因为它实际上是s.substr(0,s.npos).您可以使用任意数量的带有默认参数的标准C函数进行确认.最简单的地方是使用任何STL容器构造函数.
以一个向量为例.我们都知道向量可以使用Allocator,但是分配给Allocator的默认参数对于大多数临时用途来说“足够好”.果然,矢量构造函数的两个签名是:
explicit vector ( const Allocator& = Allocator() ); explicit vector ( size_type n,const T& value= T(),const Allocator& = Allocator() );
在这两种情况下,Allocator参数都有一个默认赋值,而在第二种情况下,T默认值具有默认赋值.现在,看看Xcode在构造向量时的建议:
没有参数列表的建议实际上是仅使用Allocator的构造函数.仅采用size_type的建议实际上是采用size_type,T和Allocator的构造函数.
根据您对此的看法,它可能是也可能不是Xcode错误.理想情况下,您希望查看带有默认参数的完成,以获得更简单的函数,例如substr(),但对于STL容器构造函数,您可能几乎不想看到它们.也许它可能是一种选择,但我不希望看到这一点得到纠正.我很乐意和你一起重复雷达.