Tom*_*mas 2 c++ string stdstring string-literals
我想知道,我通常使用std :: string作为我的代码,但是当你在一个参数中传递一个字符串进行简单的比较时,最好只使用一个文字吗?
考虑这个功能:
bool Message::hasTag(string tag)
{
for(Uint tagIndex = 0; tagIndex < m_tags.size();tagIndex++)
{
if(m_tags[tagIndex] == tag)
return 0;
}
return 1;
}
Run Code Online (Sandbox Code Playgroud)
尽管它正在进行比较的属性是一个向量,并且无论使用这个函数可能会将字符串传递给它,使用const char*来避免创建一个新的字符串仍然会更好一个字符串文字呢?
unw*_*ind 16
如果你想使用类,这里最好的方法是const引用:
bool Message::hasTag(const string& tag);
Run Code Online (Sandbox Code Playgroud)
这样,可以最小化还原剂复制,并且清楚地表明该方法不打算修改参数.我认为一个聪明的编译器可以为这个用字符串文字调用的情况发出相当好的代码.
传递一个字符指针需要你用来strcmp()
比较,因为如果你开始直接比较指针==
,那就会有麻烦.
归档时间: |
|
查看次数: |
2055 次 |
最近记录: |