关于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<<(