读书人

STL中string重载运算符quot;lt;quot;的有关问题

发布时间: 2012-02-21 16:26:23 作者: rapoo

STL中string重载运算符"<"的问题
我看各类STL的书籍介绍说string重载了运算符 " < ",但我在编译时却提示未声明的标志符,我查了下string的头文件,确实是没有重载 " < "运算符,
这时怎么回事?

如果我要实现str1 <str2的比较 ,如何写代码

[解决办法]
没问题呀,你用的什么编译器?
[解决办法]
肯定不是 < 的错误
再说 <能报标识符错不啊
[解决办法]
肯定你的代码错误
下面的代码摘自string
template <class _CharT, class _Traits, class _Alloc>
inline bool
operator <(const basic_string <_CharT,_Traits,_Alloc> & __x,
const basic_string <_CharT,_Traits,_Alloc> & __y) {
return basic_string <_CharT,_Traits,_Alloc>
::_M_compare(__x.begin(), __x.end(), __y.begin(), __y.end()) < 0;
}

template <class _CharT, class _Traits, class _Alloc>
inline bool
operator <(const _CharT* __s,
const basic_string <_CharT,_Traits,_Alloc> & __y) {
size_t __n = _Traits::length(__s);
return basic_string <_CharT,_Traits,_Alloc>
::_M_compare(__s, __s + __n, __y.begin(), __y.end()) < 0;
}

template <class _CharT, class _Traits, class _Alloc>
inline bool
operator <(const basic_string <_CharT,_Traits,_Alloc> & __x,
const _CharT* __s) {
size_t __n = _Traits::length(__s);
return basic_string <_CharT,_Traits,_Alloc>
::_M_compare(__x.begin(), __x.end(), __s, __s + __n) < 0;
}
[解决办法]
试试在#include <string> 之后加上using std::string;

我怀疑是不是 <操作符没有被名字空间暴露出来

读书人网 >C++

热点推荐