读书人

关于string(basic_string)种

发布时间: 2013-01-22 10:23:54 作者: rapoo

关于string(basic_string)类
c里的string类没有"+"操作符,所有无法执行c=a+b(变量都是string类型)
但是为什么c++的这个string(basic_string)同样找不到"+"操作符的重载,却可以执行"+"操作符呢?

摘自msdn里的basic_string说明:
basic_string
allocator_type append assign at basic_string begin c_str capacity char_type compare const_iterator const_pointer const_reference const_reverse_iterator copy data difference_type empty end erase find find_first_not_of find_first_of find_last_not_of find_last_of get_allocator insert iterator length max_size npos operator+= operator= operator[] pointer rbegin reference rend replace reserve resize reverse_iterator rfind size size_type substr swap traits_type value_type

[解决办法]
c里面没有string.
c++里面重载的全局的+号,但不是basic_string类成员函数,所以msdn就没有显示出来。
具体代码你可以看<string>文件,里面有重载的


template<class _Elem,
class _Traits,
class _Alloc> inline
basic_string<_Elem, _Traits, _Alloc> __CLRCALL_OR_CDECL operator+(
const basic_string<_Elem, _Traits, _Alloc>& _Left,
const basic_string<_Elem, _Traits, _Alloc>& _Right)
{// return string + string
return (basic_string<_Elem, _Traits, _Alloc>(_Left) += _Right);
}

[解决办法]
File: "C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\string" 34 occurrences found on 34 lines
15: // basic_string TEMPLATE OPERATORS
19: basic_string<_Elem, _Traits, _Alloc> operator+(
33: basic_string<_Elem, _Traits, _Alloc> operator+(
47: basic_string<_Elem, _Traits, _Alloc> operator+(
61: basic_string<_Elem, _Traits, _Alloc> operator+(
75: basic_string<_Elem, _Traits, _Alloc> operator+(
89: basic_string<_Elem, _Traits, _Alloc> operator+(
99: basic_string<_Elem, _Traits, _Alloc> operator+(
109: basic_string<_Elem, _Traits, _Alloc> operator+(
123: basic_string<_Elem, _Traits, _Alloc> operator+(
133: basic_string<_Elem, _Traits, _Alloc> operator+(
143: basic_string<_Elem, _Traits, _Alloc> operator+(
153: basic_string<_Elem, _Traits, _Alloc> operator+(
163: bool operator==(


173: bool operator==(
183: bool operator==(
193: bool operator!=(
203: bool operator!=(
213: bool operator!=(
223: bool operator<(
233: bool operator<(
243: bool operator<(
253: bool operator>(
263: bool operator>(
273: bool operator>(
283: bool operator<=(
293: bool operator<=(
303: bool operator<=(
313: bool operator>=(
323: bool operator>=(
333: bool operator>=(
344: basic_istream<_Elem, _Traits>& operator>>(
458: basic_istream<_Elem, _Traits>& operator>>(
489: basic_ostream<_Elem, _Traits>& operator<<(

读书人网 >C++

热点推荐